您现在的位置是:主页 > news > 西部中大建设集团有限公司网站/沈阳seo建站
西部中大建设集团有限公司网站/沈阳seo建站
admin2025/6/13 17:40:20【news】
简介西部中大建设集团有限公司网站,沈阳seo建站,微信h5在哪个网站做,宁波网站制作工作室我们都知道C语言中有一类指针叫做函数指针,但是它的用法和指针不大一样,甚至说它是一个异类指针。 下面看一段代码 #include <stdio.h> int add(int a, int b) {return a b; } int main() {int(*pfunc)(int, int) add;printf("%d\n",…
西部中大建设集团有限公司网站,沈阳seo建站,微信h5在哪个网站做,宁波网站制作工作室我们都知道C语言中有一类指针叫做函数指针,但是它的用法和指针不大一样,甚至说它是一个异类指针。 下面看一段代码
#include <stdio.h>
int add(int a, int b)
{return a b;
}
int main()
{int(*pfunc)(int, int) add;printf("%d\n",…
我们都知道C语言中有一类指针叫做函数指针,但是它的用法和指针不大一样,甚至说它是一个异类指针。
下面看一段代码
#include <stdio.h>
int add(int a, int b)
{return a + b;
}
int main()
{int(*pfunc)(int, int) = add;printf("%d\n", (*************pfunc)(2, 3));printf("%d\n", (********pfunc)(2, 3));printf("%d\n", (*pfunc)(2, 3));printf("%d\n", (pfunc)(2, 3));system("pause");return 0;
}
那么代码输出什么呢??
为什么说函数指针和普通的指针不一样?这就是原因。
所有的解引用碰到函数指针的时候 = 不存在;不存在形式上的指针,一般也不会做这样的时,没有意义。函数在被调用的的时候才有空间,所以add此时没有空间,也就没有地址,那么add赋值过去了什么?函数指针只是样子上的指针,其实在函数上设置了虚地址,假地址,也就是add有一个假的地址假设为0x01,不是真正有空间的,赋值过去的是假地址,通过这个假地址去找,并不是不是真正的指针。
add此时没有空间,就没有了地址,函数指针不可能接收到一个真正的指针,所以说函数指针只是一个形式上的指针,不要和真正的指针混杂到一起。所以不是指针的用法
&add的
&add 也是一样的 不会受影响