数组名的含义.xml
*/ /*--> */ 数组名的含义 int a[2]={1,2}; cout<<&a<<endl; cout<<a<<endl; cout<<&a[0]<<endl; cout<<*a<<endl; cout<<sizeof(a)<<endl; 0012F0C8 0012F0C8 0012F0C8 1 8 由此可见, 数组名a的值、&a、&a[0]的值相同,而a[0]为数组的第一个元素。 我们可以推断: 编译器没有为数组名分配空间,但编译器对数组名做了特殊处理 即是, 数组名 为数组首地址, 而且 &数组名 也是代表的数组首地址。 int a[4]={1,2,3,4}; int (*p)[4]; p=a; // 这种赋值是错误的 p=&a; // 这种赋值是正确的,原因p是数组指针 所以应将数组的地址赋值给p // 就如同p若为整形指针,则应将整形的地址赋值给p // 虽然在实际中,数组名与&数组名 都是同一个值,但是编译器在逻辑上仍然将a视为数组,将&a视为取数组的地址 // 所以数组指针=&数组名 即p=&a; 又如程序: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[4]; for(p=&a[0];p<&a[0]+3;p++) cout<<&p<<endl; cout<<endl; for(p=&a[0];p<&a[0