2次元配列のポインタの使い方は?

C言語の2次元配列は、連続したメモリセルからなる連続領域です。ポインタを使ってこのメモリセルにアクセスできるため、ポインタを使って2次元配列を操作できます。

ポインタは、配列の最初の要素を参照することで1次元配列を作成できます。同様に、配列の最初の1次元配列を参照することで2次元配列を作成できます。配列arrがあるとすると、ポインタptrは次のように定義できます。

int arr[m][n];
int (*ptr)[n] = arr;

上記コードでは、ptrは一次元配列を指しているポインタで、二次元配列のarrの最初の一次元配列を指しています。

ポインタptrから二次元配列の要素にアクセスし操作することができます。例えば、ptr[i][j]によってi行j列の要素にアクセスできます。ポインタで二次元配列を操作する際は、適切に要素の位置を計算するために、列数nを明示的に指定する必要があることに注意してください。

上記のほかに、二次元配列のポインターを表すにはポインター配列を使用する方法があります。ポインター配列とは、すべての要素が一次元配列を指すポインターである配列です。以下に例を示します。

int arr[m][n];
int *ptr[m];
for (int i = 0; i < m; i++) {
    ptr[i] = arr[i];
}

上記のコードでは、ptr はポインタの配列で、その各要素は 1 次元配列へのポインタである。2 次元配列の各行を走査して、各行の先頭アドレスをポインタ配列の対応する要素に代入することで、2 次元配列をポインタ配列に変換することができる。

ポインタを使って二次元配列を操作することで、特に大規模データの処理時に、コードの効率と柔軟性が向上します。

bannerAds