首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于函数指针赋初值时的1点疑惑,新手发帖求解

2012-11-08 
关于函数指针赋初值时的一点疑惑,新手发帖求解如下:程序中有这样一个函数int max(int,int)然后声明了int

关于函数指针赋初值时的一点疑惑,新手发帖求解
如下:
程序中有这样一个函数int max(int,int);然后声明了int (*p)(int,int); 在赋初值的时候p = max; 和 p = &max的作用完全相同,编译器不会报错,一切正常,按照我的理解 max代表的是函数的首地址,在它的前面再添加一个&不就是表示的是地址的地址吗 这不就是二级地址 应该提示类型不匹配啊,是因为int (*p)(int,int); 这样声明了之后 p中也可以存放二级地址吗?

就像int a[10]; int *p; p = a;而 p = &a;就不可以。



[解决办法]
对函数来讲,max和&max是一回事,不过推荐的写法是max。
[解决办法]
纠正楼主一个错误,max跟&max都是表示函数的入口地址。你可以试试看先声明一个数组a[10],再print出a跟&a,发现是一样的,都表示数组首地址。
至于你下面那个问题a是表示首地址,是可以直接赋在p上。为什么p=&a不可以?因为这种赋值语句只能用于指针初始化~
[解决办法]
max 也是一个函数指针,const。

热点排行