2012-05-13 2 views
6

、アレイ内A[2][3]右端の屈折率変化、すなわち要素がA[0][0], A[0][1]...長方形アレイはCで

が同じである.NETの矩形アレイについても同様であるようにメモリに配置された、最小のメモリアドレスシフトをもたらしたと言いますか?我々が持っているなら、配列a[2, 3]a[0, 0], a[0, 1]...としてメモリにある要素ですか?

+0

あなたは、匹敵するものを正確に比較していません。あなたのC配列は実際には2次元配列ではなく、配列の配列です。 C#でも同じことができます。 'int [] []'ではなく、 'int [、]'ではありません。 – svick

+0

@svickあなたは間違っているだけです。 –

+0

いいえ、それは2D配列がCでどのように実装されるかです。それらは要素が1次元配列である単なる1次元配列です。 –

答えて

14

CLI specification、セクション8.9.1、状態:

配列要素が行優先 順に配列オブジェクト内にレイアウトされなければならない(すなわち、右端のアレイ ディメンションに関連付けられた要素がなければなりません最低から最高まで連続して配置されている インデックス)。各配列要素に割り当てられた実際の記憶域には、プラットフォーム固有のパディングが含まれています( )。

だから、答えはイエスです - あなたは(これは行優先順と呼ばれ、仕様が言うように)など、まず、最初の行のすべての要素に遭遇した2行目の全ての要素になります。

+1

ありがとう、自分自身を見つけるのは怠惰でした! :) –