无法理解为什么a [1]的值不等于10
void main()
{
int a[]={2,1};
int *ptr=a;
*ptr++=10; //trying to update a[1]=10
printf("%d",*ptr);
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下吗?
我们来看看你的代码,然后将它分开:
int main() {
int a[]={2,1};
int *ptr=a;
// Validation
assert(ptr == &a[0]);
// Let's now do what *ptr++ = 10 actually does:
*ptr = 10;
ptr = ptr + 1;
// Validation
assert(ptr == &a[1]);
// Printing. Note that we are printing a[1], not a[0].
printf("%d",*ptr);
}
Run Code Online (Sandbox Code Playgroud)
从cppreference中读取引用可能也会有所帮助.他们正在讨论后缀增量(ptr++)和前缀增量(++ptr)之间的区别.
返回的运算符后缀版本的结果是原始操作数,副作用是在返回此结果后操作数递增/递减.
运算符的前缀版本的返回结果是递增/递减的操作数.
听起来你想使用前缀增量,而不是后缀增量.