ホームページ >バックエンド開発 >C#.Net チュートリアル >C言語で二次元配列をメモリに格納する順序は何ですか?
C 言語では、2 次元配列のメモリへの格納順序は行単位であり、2 次元配列 A[m][n] は m 行 n 列の 2 次元配列です。 a[p][q] が A の最初の要素であるとします。つまり、2 次元配列の行添字の範囲は p から [m p] であり、列添字の範囲は q から [n q] であるとします。
#C 言語では、2 次元配列要素は行ごとにメモリに格納されます。
2 次元配列 A[m][n]。これは、m 行、n 列の 2 次元配列です。 a[p][q] を A の最初の要素とします。つまり、2 次元配列の行の添字は p から m p まで、列の添字は q から n q までとなります。 「主要順序」の要素 a[i ][j] のアドレスは次のように計算されます:LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t;「列の優先順位」で格納される場合、アドレスは次のように計算されます:
LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t;配列を格納するために必要なセルの最小数は
(m-p 1) * (n-q 1) * t バイトです。
拡張情報:
C 動的 2 次元配列: 整数を例にとります。row は行数、col は行数です。列数
int **data;//二次元配列の格納ポインタ、ポインタからポインタへ。
date=x[0][0] のアドレスは、この方法でより適切にマークされます。
sizeof(date) の結果は 4 であるため、2 次元配列を格納することはできません。
//以下实现如何申请内存 data = new int *[row]; for (int k = 0; k < row; k++) { data[k] = new int[col]; }
//赋值跟普通二维数组一样 例如 data[0][0] = 5; //将二维数组1行1列(C++中称为0行0列)赋值为5 //删除内存 for (int i = 0 ; i < row; ++i) { delete [] data[i]; //此处的[]不可省略 } delete [] data;推奨チュートリアル: 「
c ビデオ チュートリアル」
以上がC言語で二次元配列をメモリに格納する順序は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。