这个特定的指针增量如何在C ++中起作用?

时间:2017-02-21 12:35:34

标签: c++ c++11

示例代码:

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

编辑:我已编辑删除评论并添加说明。抱歉导致混乱

1 个答案:

答案 0 :(得分:0)

前两次递增指针myarr。这意味着你首先打印元素0,然后是元素1.第三次在指针myarr处递增值,而不是指针本身,然后再次打印该元素(但现在以1递增)。 / p>

这是因为myarr++*myarr++做同样的事情 - 增加myarr。第二个也取消引用它,但你忽略了它的价值。 (*myarr)++首先显式取消引用,然后递增解除引用的指针 - 即它指向的值,而不是指针。