函数的地址

发布时间:2023年12月29日

简单介绍函数指针:

#include <stdio.h>
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?

文章来源:https://blog.csdn.net/wx20041102/article/details/135297476
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。