1:数组名其实被解释为第一个元素的地址,但对数组名应用&时,得到的是整个数组的地址。例如
short tell[10];
cout<<tell<<endl; //displays &tell[0]
cout<<&tell<<endl; //displays address of all array
从数字上说,这两个是数字是一样的。但从数字表示的地址上来说,第一个是首元素的地址,而第二个是整个数组的地址。因此,tell+1是地址值+2,而&tell+1是地址值+20.
2:虽然指向数组的指针和数组名都表示数组的首元素的地址,但是,两者还是有区别的:
(1),指针的值是可以被更改的:pointername=pointername+1;
(2),但是,数组名的值确实不能被更改的:arrayname=arrayname+1 //是错误的,但是arrayname+1是允许的,因为它并没有改变arrayname的值