在C++中的引物第5版,第3.5節,第115頁,它提供了以下示例:C++底漆 - 指針和引用到一個Array
int *ptrs[10]; // ptrs is an array of ten pointers to int
int &refs[10] = /* ? */; // error: no arrays of references
int (*Parray)[10] = &arr; // Parray points to an array of ten ints
int (&arrRef)[10] = arr; // arrRef refers to an array of ten ints
我理解幾乎所有的exemples,除了一個:
int (*Parray)[10] = &arr; // Parray points to an array of ten ints
指向一個數組,我可以這樣做:
int a[10];
int *p = a;
由於名稱「一」也是一個點呃到數組,現在p指向與由名稱'a'表示的指針相同的地方。
我試圖編譯經書給出的例子,我期待的是使用:
int (*Parray)[10] = &arr; // Parray points to an array of ten ints
將有相同的效果,在我給的例子。問題是,沒有發生,這裏是代碼:
#include <iostream>
using namespace std;
int main(int argc, char const *argv[]) {
int arr[10] = {1,1,1,1,1,1,1,1,1,1};
int *ptrs[10];
int (*Parray)[10] = &arr;
int (&arrRef)[10] = arr;
cout << *(Parray + 1) << endl;
cout << Parray[1] << endl;
return 0;
}
此代碼編譯,並給出了下面的輸出:
0x7fff5c4a2ab8
0x7fff5c4a2ab8
有人能準確解釋:
int (*Parray)[10] = &arr; // Parray points to an array of ten ints
是?我能用它做什麼?