2011-02-15 34 views
6

C言語の配列でアドレスを生成するにはどうすればよいですか?[x] [y]は特定の値にどのようになるのですか?実際にコーディングを開始します。Cの2次元配列、アドレス生成

答えて

3

これは、あなたが考えている配列のデータ型に応じて行われます。

整数配列の場合、各値は4バイトを保持するので、X行の長さは4Xバイトになります。

したがって、X * Yの2次元マトリックスは4 * X * Yバイトになります。 (Arryののベースアドレス) +(列のXの*号)+(Y //現在の行のオフセット)

任意のアドレスがArryの[X] [Y]はとして を計算することであろうと言います

0

入れ子配列は配列の配列です。

たとえば、int[][6]は、int[6]の配列です。
4バイトのintを仮定すると、外側の配列の各要素は6 * 4 = 24バイトです。

したがって、arr[4]は、外側の配列の3番目の配列、つまり*(arr + 4 * 24)を取得します。

arr[4]は、通常int[]です。 arr[4][2]は、この内部配列内の2番目のを取得します。または

1

Cの2次元配列は長方形です。例えば、

int matrix[2][3]; 

は、メモリの単一ブロック2*3*sizeof(int)バイトを割り当てます。 matrix[0][1]のアドレス指定は、0 * (3 * sizeof(int))sizeof(int)の追加の問題です。次に、その合計をmatrixが始まるアドレスに追加します。

+0

はマイケルズ – Lagnesh

0

char anArray[][13]={"Hello World!","February","John"}; 

あなたのようにそれを視覚化することができます

anArray

H|e|l|l|o| |W|o|r|l|d|!|\0|F|e|b|r|u|a|r|y|\0|\0|\0|\0|\0|J|o|h|n|\0|\0|\0|0|\0 
^      ^       ^
0       13        26 
+0

は実際に、あなたが初期化子を与えていないため、すべての文字が\ 0に初期化されることが保証されているありがとう。ですから、あなたの '+ 'はすべて' \ 0'で置き換えるべきです。 –