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