自学内容网 自学内容网

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);


原文地址:https://blog.csdn.net/2401_83201682/article/details/142312042

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!