在C语言里面,&a[0]++和&a[0]+1分别表示什么意思?
9个回答
展开全部
不一样!
++的优先级比&高,&比+高!
所以&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++;
}
++的优先级比&高,&比+高!
所以&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++;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a[0]表示数组a 的第一个元素,
&a[0]是取a[0]在内存中的地址
&a[0]++是将a[0]在内存中的地址向前移动一个单位.
理论上&a[0]+1和&a[0]++的执行效果是差不多的
&a[0]是取a[0]在内存中的地址
&a[0]++是将a[0]在内存中的地址向前移动一个单位.
理论上&a[0]+1和&a[0]++的执行效果是差不多的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
&a[0]++表示程序运行时会对运行结果自加1
&a[0]+1表示程序运行时对结果加上1,如果改为2就会加上2
&a[0]+1表示程序运行时对结果加上1,如果改为2就会加上2
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编译错误如下,都是取得数组a的第二个元素的地址&a[0]++与&(a[0]++)等价:6,无法编译通过,不能取得地址;
表示a[0]++不是一个左值:
non-lvalue
in
unary
`&'.cpp:
main。
而&a[0]+1与a+1和&a[1]是等价的
表示a[0]++不是一个左值:
non-lvalue
in
unary
`&'.cpp:
main。
而&a[0]+1与a+1和&a[1]是等价的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询