Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語で2次元配列を関数の引数(パラメーター)として渡す方法

C言語では、2次元配列を関数の引数(パラメーター)として簡単に渡すことができます。本記事では、配列の行数・列数をグローバル定数として定義した場合の方法を、サンプルプログラムとその実行結果を交えて解説します。

2次元配列を引数として渡すサンプルプログラム

以下のプログラムでは、4行3列の2次元配列を作成して各要素に初期値を設定した後、関数func()に渡し、すべての要素に5を加算しています。

#include <stdio.h>
const int R = 4;
const int C = 3;
void func(int a[R][C]) {
    int i, j;
    for (i = 0; i < R; i++)
    for (j = 0; j < C; j++)
    a[i][j] += 5;
}
int main() {
    int a[R][C];
    int i, j;
    for (i = 0; i < R; i++)
    for (j = 0; j < C; j++)
    a[i][j] = i + j;
    printf("Initial 2-D array is:\n");
    for (i = 0; i < R; i++) {
        for (j = 0; j < C; j++) {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    func(a);
    printf("Modified 2-D array is:\n");
    for (i = 0; i < R; i++) {
        for (j = 0; j < C; j++) {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

実行結果

上記プログラムの実行結果は以下の通りです。

Initial 2-D array is:
0 1 2
1 2 3
2 3 4
3 4 5
Modified 2-D array is:
5 6 7
6 7 8
7 8 9
8 9 10

プログラムのポイント

  • C言語では、配列を関数に渡すと実体ではなく先頭アドレス(ポインタ)が渡されます。そのため、関数内で行った変更は呼び出し元の配列にも反映されます。
  • 関数の仮引数で2次元配列を受け取る場合、列数(第2次元のサイズ)の指定は必須です。行数は省略できますが、列数は省略できません。
  • この例では行数Rと列数Cをグローバル定数として定義しているため、仮引数をint a[R][C]のように自然な形で記述できます。

このように、あらかじめ配列サイズをグローバル定数で定義しておけば、2次元配列を関数の引数として分かりやすく記述でき、コード全体の可読性と保守性も向上します。

  1. C#で配列を宣言する方法とは?基本構文とサンプルコードを解説

    C#で配列を宣言するには、次の構文を使用します。 datatype[ ] 配列名; それぞれの構成要素の意味は以下のとおりです。 datatype … 配列に格納する要素のデータ型を指定します。 [ ] … この変数が配列であることを示します。 配列名 … 配列につける名前を指定します。 たとえば、double型の配列「balance」を宣言する場合は次のように書きます。 double[ ] balance; なお、この段階では配列の実体(メモリ領域)はまだ確保されていません。実際に要素を格納するには、new演算子を使って配列をインスタンス化し、要素数を指定する必要があります。 続いて、

  2. C#で配列を初期化する方法をわかりやすく解説

    すべての配列は、メモリ上に連続した領域として格納されます。最も小さいアドレスが配列の最初の要素に対応し、最も大きいアドレスが最後の要素に対応します。1. 配列の宣言まず、次のように配列を宣言します。int[] rank;ただし、宣言だけではメモリ上で配列が初期化されるわけではありません。配列変数を初期化して初めて、値を代入できるようになります。2. newキーワードを使った初期化配列は参照型であるため、インスタンスを作成するには new キーワードを使用する必要があります。int[] rank = new int[5];この例では、int型の要素を5つ持つ配列が作成されます。要素数を指定せずに