首先,在int型数组a[4]中,a是
数组指针,代表了a[0]的地址,数组指针a本身没有存储空间,所以不能用&来取a的地址,使用&a返回的地址值也是a[0]的地址;同样也不能使用a++或a=a+2之类的赋值语句对数组指针进行赋值。
所以你这个问题中&a+1和&(a+1)是错误的用法。
&a+1指向的是数组a[4]之后的地址空间。
&(a+1)是非法的语句,无法编译,因为a+1的结果存放在
寄存器中,无法取址。
如果你想表达的是取值操作,那应该使用取值操作符*,
表达式变为*a+1和*(a+1),这两个表达式是有区别的:
*a+1表示是先取出a[0]的值,然后对该值加1。
*(a+1)表示的是数组指针先向下跳一位,然后取出其指向的a[1]的值。