可能重复:
具有不同语义的函数调用
我正在阅读 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
什么?