へのポインタと参照、115ページ、それは次の例を示します:C++入門 - C++入門第5版、3.5節で配列
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
私は1つを除いて、ほぼすべてのexemplesを理解:
「」もポイントです名前以来int a[10];
int *p = a;
:
int (*Parray)[10] = &arr; // Parray points to an array of ten ints
は、アレイを指すように、私はちょうどのような何かを行うことができますポインタが名前 '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
をありますか?私はそれで何ができますか?