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次元配列を関数の引数として分かりやすく記述でき、コード全体の可読性と保守性も向上します。
-
C#で配列を宣言する方法とは?基本構文とサンプルコードを解説
C#で配列を宣言するには、次の構文を使用します。 datatype[ ] 配列名; それぞれの構成要素の意味は以下のとおりです。 datatype … 配列に格納する要素のデータ型を指定します。 [ ] … この変数が配列であることを示します。 配列名 … 配列につける名前を指定します。 たとえば、double型の配列「balance」を宣言する場合は次のように書きます。 double[ ] balance; なお、この段階では配列の実体(メモリ領域)はまだ確保されていません。実際に要素を格納するには、new演算子を使って配列をインスタンス化し、要素数を指定する必要があります。 続いて、
-
C#で配列を初期化する方法をわかりやすく解説
すべての配列は、メモリ上に連続した領域として格納されます。最も小さいアドレスが配列の最初の要素に対応し、最も大きいアドレスが最後の要素に対応します。1. 配列の宣言まず、次のように配列を宣言します。int[] rank;ただし、宣言だけではメモリ上で配列が初期化されるわけではありません。配列変数を初期化して初めて、値を代入できるようになります。2. newキーワードを使った初期化配列は参照型であるため、インスタンスを作成するには new キーワードを使用する必要があります。int[] rank = new int[5];この例では、int型の要素を5つ持つ配列が作成されます。要素数を指定せずに