示例代码:
int arr[] = {1,9,3,4};
int *myarr;
//Scenario 1
myarr = &arr[0];
cout<<"array at [0] "<< *myarr <<endl;
*myarr++;
cout<<"array at [1] "<< *myarr <<endl;
//Scenario 2
myarr = &arr[0];
cout<<"array at [0] "<< *myarr <<endl;
myarr++;
cout<<"array at [1] "<< *myarr <<endl;
//Scenario 3
myarr = &arr[0];
cout<<"array at [0] "<< *myarr <<endl;
(*myarr)++;
cout<<"array at [1] "<< *myarr <<endl;
我可以理解场景3的声明。但不是myarr ++和* myarr ++如何以同样的方式工作。
使用的代码块来执行上述语句。
输出如下:
array at [0] 1
array at [1] 9
array at [0] 1
array at [1] 9
array at [0] 1
array at [1] 2
编辑:我已编辑删除评论并添加说明。抱歉导致混乱
答案 0 :(得分:0)
前两次递增指针myarr
。这意味着你首先打印元素0,然后是元素1.第三次在指针myarr
处递增值,而不是指针本身,然后再次打印该元素(但现在以1递增)。 / p>
这是因为myarr++
和*myarr++
做同样的事情 - 增加myarr
。第二个也取消引用它,但你忽略了它的价值。 (*myarr)++
首先显式取消引用,然后递增解除引用的指针 - 即它指向的值,而不是指针。