发布网友 发布时间: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
因为编译器对函数指针做了特殊处理,普通指针规则无法应用到函数指针