可能重复:
具有不同语义的函数调用
我正在阅读 C 中的函数指针。我尝试了这个程序:
#include <stdio.h>
int foo(void)
{
printf("At foo.");
return 0;
}
int main (void)
{
printf("%p\t%p\t%p\n", &foo, foo, *foo);
return 0;
}
该程序的输出是:
0040138C 0040138C 0040138C
在一维数组<datatype> <identifier>[N]中,identifier和&identifier指向相同的值,但值的性质不同。一个是类型datatype*,另一个是指向一维数组的类型指针。类似地,对于函数,foo和&foo是相同的。但是*foo,它的本质是&foo, foo, *foo什么?