在C语言里面,&a[0]++和&a[0]+1分别表示什么意思?

在C语言里面,&a[0]++和&a[0]+1分别表示什么意思?最好能举个例子说明... 在C语言里面,&a[0]++和&a[0]+1分别表示什么意思?

最好能举个例子说明
展开
 我来答
White_MouseYBZ
推荐于2018-03-09 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6531万
展开全部
&a[0]++;是错误语句,编译都不会过。因为++是后++,在执行该语句时是不计算的,所以a[0]++是个表达式而不是值,显然用&取一个表达式的地址是非法操作!而如果是&++a[0];则是正确的,因为前++在执行&时已经计算过了:就是先给a[0]+1,然后再取a[0]的地址。
&a[0]+1;是正确语句,因为&的优先级比+高,所以是先取a[0]的地址再给这个地址+一个元素所占字节数——就是说&a[0]+1是a[1]的地址。
百度网友2d9d02242
2005-11-10 · TA获得超过565个赞
知道小有建树答主
回答量:339
采纳率:0%
帮助的人:358万
展开全部
不一样!
++的优先级比&高,&比+高!
所以&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++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
生寸过368
2005-11-02 · TA获得超过2445个赞
知道小有建树答主
回答量:485
采纳率:0%
帮助的人:0
展开全部
a[0]表示数组a 的第一个元素,
&a[0]是取a[0]在内存中的地址
&a[0]++是将a[0]在内存中的地址向前移动一个单位.

理论上&a[0]+1和&a[0]++的执行效果是差不多的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
treer9
推荐于2017-12-16 · 贡献了超过159个回答
知道答主
回答量:159
采纳率:0%
帮助的人:36.2万
展开全部
&a[0]++表示程序运行时会对运行结果自加1
&a[0]+1表示程序运行时对结果加上1,如果改为2就会加上2
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
信培胜戊衣
2020-03-29 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:25%
帮助的人:610万
展开全部
编译错误如下,都是取得数组a的第二个元素的地址&a[0]++与&(a[0]++)等价:6,无法编译通过,不能取得地址;
表示a[0]++不是一个左值:
non-lvalue
in
unary
`&'.cpp:
main。
而&a[0]+1与a+1和&a[1]是等价的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式