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

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」と書くこともできます。いずれの書き方でも実際にはポインタとして受け取られるため、配列の要素数が必要な場合は別途引数で渡すか、固定長であることを前提にする必要があります。


  1. 【初心者向け】C言語のポインタを使って配列要素の合計を計算する方法

    ポインタとは?ポインタ(Pointer)とは、他の変数のアドレス(メモリ上の場所)を格納するための変数のことです。例えば、次のような変数宣言を見てみましょう。int qty = 179;この場合、変数 qty には値 179 が格納されています。ポインタは、この qty が配置されているメモリ上のアドレスを保持することができます。ポインタの宣言ポインタを宣言する構文は以下の通りです。int *p;ここで p はポインタ変数であり、他の int 型変数のアドレスを保持します。宣言時には、変数名の前に間接演算子 *(アスタリスク)を付けます。ポインタの初期化ポインタ変数を初期化するには、アドレス演

  2. 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,