函数的地址

简单介绍函数指针:

#include
int add(int x,int y)
{
    return x+y;
}
int main()
{  返回类型是整形 pf是指针变量  指向的是参数类型为(int,int) 的函数
    int    (*pf)        (int,int)   =    add;将add的地址存入pf中
    printf("%d\n",(*pf)(4,4));
    return 0;
}

下面分析二段代码:

第一个:

(*((void (*)())0))()    («c和陷阱» 中提及)

(*((void (*)())0))()  括号用不同的颜色标注

void (*)()   先分析它:它将函数名省略,函数指向void ,返回类型void

((void (*)())0)   首先0有二层含义:1.数字0   2.地址为0 

                         0前面有void (*)() 代表强制类型转换  也就是地址0

(*((void (*)())0))  解引用地址为0处的函数 , 函数参数无

第二个:signal函数名  函数参数为 int , void(*)(int) , 返回类型void(*)(int)

void( * signal( int , void(*)(int) ) )(int)   一般函数名后加参数  返回类型为去掉函数名和返回参数

首先:一般函数的声明为 int add(int x ,int y)    函数名 + 参数 + 返回类型

void(*)(int) 函数指针 ,指向int,返回void 

你可能感兴趣的:(c++,算法,开发语言)