【C言語】関数の引数に配列をそのまま渡すにはどうしたらいい?

この記事では、C言語で配列を関数に渡す方法について解説します。

目次から探す

配列を関数に渡す方法

C言語では、関数に配列を渡す方法はいくつかあります。

ここでは、以下の3つの方法を紹介します。

方法1:ポインタを使う

配列を関数に渡す一般的な方法は、ポインタを使うことです。

配列は、その最初の要素へのポインタとして扱うことができます。

関数に渡す際には、配列の先頭要素へのポインタを引数として渡します。

void printArray(int* arr, int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    printArray(arr, size);
    return 0;
}

上記の例では、printArrayという関数を定義し、arrという名前のポインタと、sizeという名前の整数を引数として受け取っています。

printArray関数内では、渡された配列の要素を順番に表示しています。

方法2:配列のサイズを指定する

配列のサイズを関数に渡す方法もあります。

この場合、配列の要素数を別途引数として関数に渡します。

void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    printArray(arr, size);
    return 0;
}

上記の例では、printArray関数の引数として、arrという名前の配列と、sizeという名前の整数を受け取っています。

printArray関数内では、渡された配列の要素を順番に表示しています。

方法3:配列の要素をコピーする

配列を関数に渡す別の方法として、配列の要素をコピーする方法があります。

この場合、関数には配列の要素を受け取るための引数を指定し、呼び出し元で配列の要素をコピーして渡します。

void printArray(int a, int b, int c, int d, int e) {
    printf("%d %d %d %d %d\n", a, b, c, d, e);
}
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    printArray(arr[0], arr[1], arr[2], arr[3], arr[4]);
    return 0;
}

上記の例では、printArray関数の引数として、aからeまでの名前の整数を受け取っています。

main関数内では、配列の要素を個別に指定してprintArray関数を呼び出しています。

これらの方法を使うことで、配列を関数に渡すことができます。

適切な方法を選択し、プログラムの要件に応じて使い分けましょう。

目次から探す