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

关于函数指针赋初值时的一点疑惑,新手发帖求解
如下:
程序中有这样一个函数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。