1
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] 的地址。我哪里错了?

4

2 回答 2

7

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

于 2012-09-10T22:54:07.313 回答
2

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

int* parr = arr; // points to the 0 element
parr++; // poInts to the first element, 1.
于 2012-09-10T22:57:16.777 回答