c语言中“函数指针”

变量有地址,数组有地址,那么函数是否有地址呢?

int Add(int x,int y){

return x+y;

}

int main()

{
     pritnf("%p\n",&Add);

     pritnf("%p\n",Add);    //&函数名和函数名都是函数的地址,没有区别。

     return 0;

}

若是想存放起来:int (*pf)(int,int) = &Add;     //pf:函数指针变量

去掉名字:则就是函数指针pf类型:int  (*)(int,int)  函数指针类型。

若是:

  int (*pf)(int,int)=Add;   

  int ret=(*pf)(4,5); //  *可写可不写,对其没有影响。写的话必须带上小括号

  pritnf("%d\n",ret);

例题:

int mian()

{
    (*(void)(*) ( ) ) 0 ( );

return 0;

}

其中的 (*(void)(*) ( ) ) 0 ( );是什么意思?

     由此可见函数指针类型是:void (*)( ),这是强制类型转换。例如int (3.14)

     也是一次函数调用,调用0的地址存放的那个函数。

     0地址出放的这个函数是没有参数的,返回类型是void.

例题:

void (*signal (int,void(*) (int) ) ) (int);

       signal:函数名,跟圆括号结合了。

      (int,void(*) (int) )函数参数,整形,一种函数指针类型,可接收一函数地址。

      剩下的就是返回类型,void(*)(int)--函数指针类型

     该函数指向函数参数int,返回类型void.

函数定义:

int Add(int x,int y)

{

return x+y;

}

函数调用:Add(3,5);

函数声明:int Add(int,int);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值