C言語で配列の個々の要素を関数の引数として渡す方法を解説
配列とは、共通の名前のもとにまとめて格納された、関連性のある複数のデータ項目の集まりです。
配列の宣言
配列を宣言するための構文は以下のとおりです。
データ型 配列名 [サイズ];
例えば、5つの整数を格納する配列は次のように宣言します。
int a[5];
配列の初期化
配列の初期化には、主に次の2つの方法があります。
- コンパイル時の初期化(静的初期化)
- 実行時の初期化(動的初期化)
また、宣言と同時に初期値を与えることも可能です。その場合は以下のように記述します。
int a[5] = {100, 200, 300, 400, 500};関数とは
関数とは、特定の明確に定義された処理を実行するための独立したプログラムのブロックです。C言語において、配列を関数へ引数として渡す方法は主に2つあります。
- 配列全体を1つの引数として関数に渡す方法
- 配列の個々の要素を引数として関数に渡す方法
本記事では、後者の「個々の要素を引数として渡す方法」について詳しく解説します。
個々の要素を引数として渡す方法
配列の個々の要素を引数として渡す場合、以下のポイントを押さえておく必要があります。
- 関数呼び出しの際に、添字(インデックス)を指定した配列要素を直接引数として記述する。
- 関数側(仮引数)では、通常の単純変数を使って要素を受け取る。
つまり、配列名だけでなく「a[0]」「a[4]」のように添字付きで指定することで、その要素の値だけが関数にコピーされて渡されます。
サンプルプログラム1:最初と最後の要素を渡す
以下のプログラムでは、配列の先頭要素と末尾要素を関数displayに渡しています。
#include<stdio.h>
main() {
void display(int, int);
int a[5], i;
printf("enter 5 elements");
for (i = 0; i < 5; i++)
scanf("%d", &a[i]);
display(a[0], a[4]); // 添字付きで個々の要素を渡す
}
void display(int a, int b) { // 単純変数で受け取る
printf("first element = %d", a);
printf("last element = %d", b);
}実行結果:
Enter 5 elements 10 20 30 40 50 First element = 10 Last element = 50
サンプルプログラム2:任意の位置の要素を渡す
次の例では、6つの要素を持つ配列から、先頭・中央・末尾の要素をそれぞれ別々の引数として関数に渡しています。
#include<stdio.h>
main() {
void display(int, int, int);
int a[6], i;
printf("enter 5 elements");
for (i = 0; i < 6; i++)
scanf("%d", &a[i]);
display(a[0], a[2], a[5]); // 個々の要素を渡す
}
void display(int a, int b, int c) { // 単純変数で受け取る
printf("first element = %d\n", a);
printf("middle element = %d\n", b);
printf("last element = %d", c);
}実行結果:
enter 5 elements 10 20 30 40 50 60 first element = 10 middle element = 30 last element = 60
まとめ
このように、C言語では関数呼び出し時に「配列名[添字]」の形式で要素を指定すれば、個々の要素の値を引数として渡すことができます。関数側では通常の変数で受け取るため、値渡しとなり、関数内での変更が元の配列に影響を与えない点も特徴です。配列全体ではなく特定の要素だけを処理したい場合に有効な手法なので、ぜひ覚えておきましょう。
-
C言語の線形探索で配列内の最小値を見つける方法を徹底解説
C言語の探索アルゴリズムの種類C言語で使われる代表的な探索手法は、大きく分けて以下の2つです。線形探索(リニアサーチ)二分探索(バイナリサーチ)線形探索とは線形探索は、配列の先頭から順番に要素を一つずつ比較しながら目的のキーを探す、最も基本的な探索アルゴリズムです。データがソート(整列)されていなくても使用できる実装が非常にシンプルで理解しやすい欠点:データ数が多いほど処理時間が長くなり、システムの効率を低下させる可能性がある入出力のイメージは以下の通りです。入力:ソートされていない要素のリスト、探索キー出力:・成功 … キーが見つかった場合・失敗 … キーが見つからなかった場合例1:線形探索
-
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,