下面是指向函数的指针的问题:
- #include <stdio.h>
- int sum(int a,int b)
- {
- return a + b;
- }
- int main(int argc, const char * argv[])
- {
- int (*p)(int a,int b);
-
- p = sum;
-
- // int c = p(10 , 9);
- int c = (*p)(4 ,56);
-
- printf("c is %d\n",c);
-
- return 0;
- }
复制代码
在代码中有两个问题:
1、p = sum? 按照指针的观点,p代表的是地址,那么这里讲sum赋值给p,那么这里的函数名sum代表的也是地址?
2、指向指针的函数间接调用函数的方法,
int c = p(10 , 9);
int c = (*p)(4 ,56);
这两种方法都可以,这是为什么?感觉这有悖于指针p存储的时地址,*p是一个完成指向目标完成赋值的过
程。 |