C言語の配列でアドレスを生成するにはどうすればよいですか?[x] [y]は特定の値にどのようになるのですか?実際にコーディングを開始します。Cの2次元配列、アドレス生成
答えて
これは、あなたが考えている配列のデータ型に応じて行われます。
整数配列の場合、各値は4バイトを保持するので、X行の長さは4Xバイトになります。
したがって、X * Yの2次元マトリックスは4 * X * Yバイトになります。 (Arryののベースアドレス) +(列のXの*号)+(Y //現在の行のオフセット)
:任意のアドレスがArryの[X] [Y]はとして を計算することであろうと言います
入れ子配列は配列の配列です。
たとえば、int[][6]
は、int[6]
の配列です。
4バイトのint
を仮定すると、外側の配列の各要素は6 * 4
= 24バイトです。
したがって、arr[4]
は、外側の配列の3番目の配列、つまり*(arr + 4 * 24)
を取得します。
arr[4]
は、通常int[]
です。 arr[4][2]
は、この内部配列内の2番目のを取得します。または
Cの2次元配列は長方形です。例えば、
int matrix[2][3];
は、メモリの単一ブロック2*3*sizeof(int)
バイトを割り当てます。 matrix[0][1]
のアドレス指定は、0 * (3 * sizeof(int))
〜sizeof(int)
の追加の問題です。次に、その合計をmatrix
が始まるアドレスに追加します。
例
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'で置き換えるべきです。 –
- 1. LINQで2次元配列を生成
- 2. C#の2次元配列
- 3. 2次元配列を2次元配列で作成する
- 4. C++の動的2次元配列のアドレス
- 5. Cの2次元配列のtypedef
- 6. 2次元配列
- 7. 2次元配列
- 8. 2次元配列
- 9. ポインタの2次元配列C++
- 10. 2次元のステップ配列をC++で
- 11. Objective-Cの2次元配列
- 12. C:2次元配列のサイズ
- 13. C:2次元配列のshmget
- 14. C#の2次元配列スライス
- 15. Cの2次元配列ポインタアクセスセグメンテーションフォールト
- 16. C言語の2次元配列
- 17. c言語+ 2次元配列
- 18. Javascriptでの2次元配列からの3次元配列
- 19. FsCheck in C#:同じ形状の2次元配列のリストを生成する
- 20. 2次元配列のクリア
- 21. Javaの2次元配列
- 22. JNIの2次元配列
- 23. 2次元配列のUserControl
- 24. 2次元配列の値
- 25. 2次元配列のコピー
- 26. 2次元配列のキャッシュミス
- 27. 2次元配列のsocket_select()
- 28. C#での2次元配列と配列の返り方
- 29. 3次元配列を2次元配列に変換する
- 30. 1次元配列を2次元配列に変換する
はマイケルズ – Lagnesh