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

lew*_*cki 1 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]; 
Run Code Online (Sandbox Code Playgroud)

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

Lil*_*ard 7

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

  • @corsiKa:它实际上是`&arr [10]`,是的,另一个增量会使它有效地`&arr [20]`(如果这是合法的,它在技术上不是). (2认同)