C ++递增指向数组的指针

时间:2012-09-10 22:52:58

标签: c++

int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int (*parr)[10] = &arr;

//prints address of arr and the value 1
cout << parr << " " << *parr[0];

//what is this doing?
parr++;

//prints (what looks like the address of arr[1]) and some long number -8589329222
cout << parr << " " << *parr[0]; 

我认为parr ++会增加parr指向的地址,以便* parr [0]现在是* parr [1]的地址。我哪里错了?

2 个答案:

答案 0 :(得分:7)

您假设parr++增加一个单词。它没有。它以*parr的大小递增,在这种情况下是int[10],因此它以10个整数(可能是40个字节)的大小递增。

答案 1 :(得分:2)

您只需要一个指向数组 start 的指针。

int* parr = arr; // points to the 0 element
parr++; // poInts to the first element, 1.