C言語なら俺に聞け(入門篇) Part 44
■ このスレッドは過去ログ倉庫に格納されています
0533デフォルトの名無しさん
2009/02/16(月) 20:10:58まず、配列についてのもっとも基礎的な知識として、以下のことを記憶すること。
1) 配列とは、その要素となるある特定の型のオブジェクトが、連続したメモリ上に一定の個数並べられたものである。
2) 配列は、3つの例外を除いて、「その先頭の要素を指すポインタ値」に意味が格下げになる。
3つの例外とは、&演算子を作用させたとき(配列全体へのポインタ値が得られる)、sizeofを作用させたとき(配列全体の大きさが得られる)、charの配列を文字列定数で初期化するとき、を指す。
次に、以下のことを理解すること。
A) 1)に言う「要素」は、大きさの明らかなオブジェクトならば何でもよい。つまり、配列であってもよいし、配列の配列であってもよい。
B) 2)の格下げが起こることにより、配列に[]演算子を作用させることができる。[]演算子はポインタに作用する演算子で、たとえばpがポインタでnが整数であるとき、p[n]は*(p+n)と同じ意味になる。
C) 2)により、たとえば「intの配列の配列」が「intへのポインタ値」や「intへのポインタへのポインタ値」に格下げされると考えるのは勘違いである。「配列の配列」は「配列へのポインタ値」に格下げされる。
それでもまだ理解できないことがあれば、論点を整理して質問すること。
■ このスレッドは過去ログ倉庫に格納されています