数组名和函数名都是地址常量,二者有什么区别?
以下是我的实验,有些茫然
#include<iostream.h>
int max(int x,int y){
    return x>y?x:y;
}
int arr[]={1,2,3,4,5};
void main(){
//    cout<<sizeof(max)<<endl<<sizeof(&max)<<endl;
//仅仅sizeof(max)报错????
    cout<<sizeof(arr)<<endl<<sizeof(&arr)<<endl;
   int (*p0)(int,int)=&max;
   int (*p1)(int,int)=max;
   int c0,c1,c2,c3;
   c0=(*p0)(5,4);
   c1=p0(4,5);
   c2=(*p1)(5,4);
   c3=p1(4,5);
   cout<<c0<<endl<<c1<<endl<<c2<<endl<<c3;
}
疑问:
1、sizeof(max)为什么报错?
2、&arr\&max是什么含义?是不是sizeof(&3)也行?(实际报错)
3、sizeof(&max)=4是为什么呢?
希望高手悉心指导