一个int型数组a[4]:&a+1和&(a+1)的区别

如题所述

首先,在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]的值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-08-03
&a+1是a的地址加上1,&(a+1)是(a+1)的地址
&是地址运算符和引用运算符本回答被提问者采纳
第2个回答  2019-08-13
&a+1指的是在数组地址是再加一整个数组的地址
&(a+1)指的是增加一个类型长度的地址
相似回答