#include<stdio.h>
int main(){
extern void fun(int);
void (*p)(int) = fun;
fun(2);
(*fun)(2);
(*p)(2);
p(2);
printf("%x %x %x\n",p,fun,*fun);
}
void fun(int i){
printf("hi %d\n",i);
}
这里所有的函数调用都给出相同的输出。甚至p, fun, *fun
都给出了相同的地址。我们如何解释这一点?为什么这个C程序中所有的输出都是一样的?
How can fun and *fun be same?
在古代,当你不得不使用* fun来取消引用函数指针时,但是C的作者认为乐趣是明确的,并且使它变得如此有趣(2)会起作用吗? –