在C语言中函数是一种function-to-pointer的方式,即对于一个函数,会将其自动转换成指针的类型,比如下面这段程序,其打印的结果均是一致的。
1 #include <stdio.h>
2
3 void fun()
4 {
5 }
6
7 int main()
8 {
9 printf("%p %p %p %x\n", &fun, fun, *fun, **fun);
10 return 0;
11 }
12
Why?这三个值的结果是一样的?
1。fun是一个函数, 会转换成其指针类型。
2。*fun呢, 因为fun自动转换为指针类型了,那么*fun就是函数类型,所以自然会自动转换为指针类型。
3。**fun呢,有了上述的第二步,那么*(*fun)也会自动的转换为指针类型。
4。***fun呢,呵呵一样的了。