第1个回答 2005-11-10
不一样!
++的优先级比&高,&比+高!
所以&a[0]++是进行a[0]=a[0]+1之后,在取a[0]的地址
而&a[0]+1是先取a[0]的地址,然后将指向这个地址的指针(假设int *p;p=&a[0];)移动一个数据长度,即指向了a[1];
&a[0]++
就是
{
*p;定义类型没有写
a[0]+=1;
p=&a[0];
}
&a[0]+1
就是
{
*p;定义类型没有写
p=&a[0]
p++;
}
第2个回答 2005-11-02
a[0]表示数组a 的第一个元素,
&a[0]是取a[0]在内存中的地址
&a[0]++是将a[0]在内存中的地址向前移动一个单位.
理论上&a[0]+1和&a[0]++的执行效果是差不多的
第3个回答 推荐于2017-12-16
&a[0]++表示程序运行时会对运行结果自加1
&a[0]+1表示程序运行时对结果加上1,如果改为2就会加上2本回答被提问者采纳
第4个回答 2020-03-29
编译错误如下,都是取得数组a的第二个元素的地址&a[0]++与&(a[0]++)等价:6,无法编译通过,不能取得地址;
表示a[0]++不是一个左值:
non-lvalue
in
unary
`&'.cpp:
main。
而&a[0]+1与a+1和&a[1]是等价的