C言語で配列全体を関数の引数として渡す方法を解説
配列とは
配列(Array)とは、同じ種類の関連するデータを共通の名前でまとめて管理できるデータ構造です。C言語では、配列を引数として関数に渡す方法が主に2つあります。
- 配列全体を引数として関数に渡す
- 個々の要素を引数として関数に渡す
配列全体を引数として関数に渡す方法
配列全体を渡したい場合は、関数呼び出し時に「配列名」を指定するだけでOKです。
受け取る側の関数では、仮引数として配列を宣言しておく必要があります。
なお、C言語では配列名を渡すと、配列の実体そのものではなく「先頭要素へのポインタ」が渡されます。そのため、関数の中で配列の内容を変更すると、呼び出し元の元の配列にも影響が及ぶという点に注意しましょう。
サンプルプログラム1
以下は、キーボードから5つの整数を入力して配列に格納し、その配列全体をdisplay()関数に渡して表示する例です。
#include<stdio.h>
main (){
void display (int a[5]);
int a[5], i;
clrscr();
printf ("5つの要素を入力してください");
for (i=0; i<5; i++)
scanf("%d", &a[i]);
display (a); // 配列名を指定して呼び出す
getch( );
}
void display (int a[5]){
int i;
printf ("配列の要素は次のとおりです");
for (i=0; i<5; i++)
printf("%d ", a[i]);
}
実行結果
5つの要素を入力してください 10 20 30 40 50 配列の要素は次のとおりです 10 20 30 40 50
サンプルプログラム2
続いて、もう一つの例を見てみましょう。こちらも同様に、入力した5つの値を格納した配列全体をnumber()関数に渡しています。
#include<stdio.h>
main (){
void number(int a[5]);
int a[5], i;
printf ("5つの要素を入力してください\n");
for (i=0; i<5; i++)
scanf("%d", &a[i]);
number(a); // 配列名を指定して呼び出す
getch( );
}
void number(int a[5]){
int i;
printf ("配列の要素は次のとおりです\n");
for (i=0; i<5; i++)
printf("%d\n" , a[i]);
}
実行結果
5つの要素を入力してください 100 200 300 400 500 配列の要素は次のとおりです 100 200 300 400 500
補足:現代的な開発環境での注意点
上記のコードで使われているclrscr()やgetch()は、Turbo Cなど古い開発環境固有の関数(conio.h)です。GCCやClangなどの現在主流のコンパイラでは動作しないため、実際に試す際はこれらの行を削除するか、標準的な代替手段を使用してください。
また、受け取る側の仮引数は「int a[5]」のほかに「int a[]」や「int *a」と書くこともできます。いずれの書き方でも実際にはポインタとして受け取られるため、配列の要素数が必要な場合は別途引数で渡すか、固定長であることを前提にする必要があります。
-
【初心者向け】C言語のポインタを使って配列要素の合計を計算する方法
ポインタとは?ポインタ(Pointer)とは、他の変数のアドレス(メモリ上の場所)を格納するための変数のことです。例えば、次のような変数宣言を見てみましょう。int qty = 179;この場合、変数 qty には値 179 が格納されています。ポインタは、この qty が配置されているメモリ上のアドレスを保持することができます。ポインタの宣言ポインタを宣言する構文は以下の通りです。int *p;ここで p はポインタ変数であり、他の int 型変数のアドレスを保持します。宣言時には、変数名の前に間接演算子 *(アスタリスク)を付けます。ポインタの初期化ポインタ変数を初期化するには、アドレス演
-
C言語で配列の重複を削除し、ソート済みの一意な要素を出力する方法
整数型の要素を持つ配列が与えられたとき、重複する値を取り除き、一意な(distinct)要素だけをソートして出力するのが本記事の目的です。例として、次のような整数値を格納した配列を考えてみましょう。4, 6, 5, 3, 4, 5, 2, 8, 7, 0この配列を単純にソートすると「0, 2, 3, 4, 4, 5, 5, 6, 7, 8」となりますが、この結果にはまだ重複値である 4 と 5 が含まれています。これらを削除し、最終的な出力結果は次のようになります。0, 2, 3, 4, 5, 6, 7, 8入力と出力の例Input: array[] = {4, 6, 5, 3, 4, 5,