私はCのポインターに関するいくつかの記事を読み始めましたが、理解できない例が1つあります。
例はここからです:http://en.wikibooks.org/wiki/C_Programming/Pointers_and_arrays
ここにあります:
少し違う問題を見てみましょう。2次元配列が必要ですが、すべての行を同じ長さにする必要はありません。私たちが行うことは、ポインターの配列を宣言することです。以下の2行目は、Aをポインターの配列として宣言しています。各ポインタはフロートを指します。適用可能なコードは次のとおりです。
float linearA[30];
float *A[6];
A[0] = linearA; /* 5 - 0 = 5 elements in row */
A[1] = linearA + 5; /* 11 - 5 = 6 elements in row */
A[2] = linearA + 11; /* 15 - 11 = 4 elements in row */
A[3] = linearA + 15; /* 21 - 15 = 6 elements */
A[4] = linearA + 21; /* 25 - 21 = 4 elements */
A[5] = linearA + 25; /* 30 - 25 = 5 elements */
A[3][2] = 3.66; /* assigns 3.66 to linearA[17]; */
A[3][-3] = 1.44; /* refers to linearA[12];
negative indices are sometimes useful.
But avoid using them as much as possible. */
私の質問は、配列の名前が最初のメンバーへのポインターであるため、なぜA[0]
5つの要素のみへのポインターであり、のすべてへのポインターではないのかということです。linearA
そしてA[1] = linearA + 5;
、同じ理由で、6つの要素が連続していますか?の6番目のメンバーへのポインタではないA[1]
はずlinearA
ですか?
誰かが私の間違いはどこにあるのか説明できますか?