函数指针应用
代码1
int main()
{
(*(void (*)())0)();
//调用0地址处得函数
//该参数无参,返回类型时void
//void (*)() -- 函数指针类型
//(void (*)())0 0前面是将0强制类型转换 把int转换成无参函数类型 被解释为一个函数地址
//解引用
return 0;
}
代码2
int main()
{
void(*signal(int,void(*)(int)))(int);
//1.signal 和() 先结合,说明signal是函数名
//2.signal 是个函数名 函数的第一个参数类型是int 第二个参数类型是函数指针
// 该函数指针,指向一个int类型,返回类型是void
//3.signal函数的返回类型也是一个函数指针
// 该函数指针,指向一个int参数,返回类型是void
//这是一次函数的声明
//类比
typedef unsigned int uint;
typedef void (*pfun_t)(int);
//对void(*)(int)的函数指针类型重命名为pfun_t
void(*)(int) signal(int, void(*)(int)); //这是理论的写法 但是与语法需要把函数以及函数的参数类型放到*后面
//函数指针类型替换之后
pfun_t signal(int, pfun_t);
return 0;
}