首 页 行业热点 新车 试驾评测 养车用车 车型库

C语言中函数名不是代表函数存储单元的首地址吗?为什么*函数名=函数...

发布网友 发布时间:2022-04-23 17:11

我来回答

5个回答

热心网友 时间:2022-05-05 01:07

感觉你说的是 “指向函数的指针变量”

可以定义一个 函数指针变量,然后将一个函数名赋值给这个函数指针变量。

很多函数 是把一个函数指针 作为 参数来传递的。

举例:

int c,d;

int (*p)(int a,int b); //声明一个函数指针类型的变量,变量名为p,其类型是 int *(int a,int                                   //b)

int func1( int a,int b);//声明一个函数1

int func2(int f,int g);//声明一个函数2

p=func1; //将一个函数名赋值给一个函数指针变量

c=(*P)(34,69); //使用指针调用函数fun1

p=func2;

d=(*p)(50,90); //使用函数指针 调用函数func2

其它细节这里就不详细解答了,希望我的回答对你有点帮助,很高兴和你一起讨论和学习。

热心网友 时间:2022-05-05 02:25

这是编译器的设计决定的,编译器对函数会特殊处理,将 *函数名 和 函数名 都解析为函数代码起始地址。
编译器对特殊指针的处理并不完全遵从普通指针类型的处理规则。

热心网友 时间:2022-05-05 03:59

*p的意思是p是指针
p指向的是内存,内存中可以是1,2,3,4,5
也可以是main(),程序会头微相接死循,安全检查会报错

*p是调用的内容,
p=&函数名 *p=函数名是一样的,但p是地址,地址p初始化就要给出地址位置,不然就会报错
确切说*p指的不是函数名,只是累加器把东西放进计算器的地址头,然后内存往后偏移;
p只是一个指针

热心网友 时间:2022-05-05 05:51

问题不明确。
请补充你的依据。

热心网友 时间:2022-05-05 07:59

因为编译器对函数指针做了特殊处理,普通指针规则无法应用到函数指针

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com