#include <stdio.h>
int add(int a, int b)
{
int c =a+b;
return c;
}
int main()
{
int a=20,b=45;
int (*p)(int , int);
p=&add;
printf("%d\n%d\n%d\n\n",*add,&add,add);
printf("%d\n%d\n%d\n\n",*add+1,&add+1,add+1);
return 0;
}
Outupt是
4199392 4199392 4199392
4199393 4199393 4199393
那么为什么* add,&amp; add,add是相同的? 我也怀疑“添加&#39;像一个数组一样,如果我错了,请纠正我,因为,数组和数组本身的地址是相同的。
答案 0 :(得分:0)
在C语言中,您可以使用函数执行的唯一操作是调用它或获取其地址。所以,如果你没有打电话,那么你几乎可以拿到它的地址。
答案 1 :(得分:0)
“C11§6.5.6添加运算符”/ 6讨论了添加到指针
当向指针添加或从指针中减去具有整数类型的表达式时,结果具有指针操作数的类型。如果指针操作数指向数组对象的元素,....如果结果指向一个数组对象的最后一个元素,那么......
C规范没有定义向函数指针添加整数类型。因此未定义的行为。