C言語で配列の個々の要素を関数の引数として渡す方法
配列の個々の要素を引数として渡すには
C言語では、配列の個々の要素を関数の引数として渡すことができます。この場合、関数を呼び出す際に、配列名だけでなく「配列名[添字]」の形式で、渡したい要素を明示的に指定する必要があります。
一方、呼び出された側の関数では、渡された要素を受け取るために、配列ではなく通常の(単純な)変数を使用します。個々の要素は「値渡し」で渡されるため、呼び出し先の関数内で値を変更しても、元の配列の内容には影響しません。
例1:最初と最後の要素を渡す
#include <stdio.h>
main (){
void display (int, int);
int a[5], i;
clrscr();
printf ("enter 5 elements");
for (i=0; i<5; i++)
scanf("%d", &a[i]);
display (a[0], a[4]); // 個々の要素を引数として関数を呼び出す
getch( );
}
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
この例では、display(a[0], a[4]) のように、配列 a の先頭要素 a[0] と末尾の要素 a[4] を個別の引数として渡しています。受け取る側の display 関数では、これらを通常の int 型変数 a と b として受け取り、その値を表示します。
例2:6つの要素を入力して最初と最後を渡す
次に、別の例を見てみましょう。6つの要素を配列に読み込み、最初の要素と最後の要素を関数に渡します。
#include <stdio.h>
main (){
void arguments(int, int);
int a[10], i;
printf ("enter 6 elements:\n");
for (i=0; i<6; i++)
scanf("%d", &a[i]);
arguments(a[0], a[5]); // 個々の要素を引数として関数を呼び出す
getch( );
}
void arguments(int a, int b){ // 個々の引数を受け取る関数
printf ("first element = %d\n", a);
printf ("last element = %d\n", b);
}
実行結果
enter 6 elements: 1 2 3 4 5 6 first element = 1 last element = 6
ポイントのまとめ
- 関数呼び出し側:
関数名(配列名[添字], ...)の形式で、渡したい要素を添字付きで指定します。 - 関数定義側:要素を受け取るには、配列ではなく単純な変数(例:
int a, int b)を使用します。 - 値渡しの挙動:個々の要素は値としてコピーされるため、関数内での変更は元の配列に反映されません。
このように、配列全体を渡すのではなく必要な要素だけを個別に渡すことで、関数のインターフェースがシンプルになり、意図しない配列の書き換えを防ぐこともできます。
-
【初心者向け】C言語のポインタを使って配列要素の合計を計算する方法
ポインタとは?ポインタ(Pointer)とは、他の変数のアドレス(メモリ上の場所)を格納するための変数のことです。例えば、次のような変数宣言を見てみましょう。int qty = 179;この場合、変数 qty には値 179 が格納されています。ポインタは、この qty が配置されているメモリ上のアドレスを保持することができます。ポインタの宣言ポインタを宣言する構文は以下の通りです。int *p;ここで p はポインタ変数であり、他の int 型変数のアドレスを保持します。宣言時には、変数名の前に間接演算子 *(アスタリスク)を付けます。ポインタの初期化ポインタ変数を初期化するには、アドレス演
-
C言語の線形探索で配列内の最小値を見つける方法を徹底解説
C言語の探索アルゴリズムの種類C言語で使われる代表的な探索手法は、大きく分けて以下の2つです。線形探索(リニアサーチ)二分探索(バイナリサーチ)線形探索とは線形探索は、配列の先頭から順番に要素を一つずつ比較しながら目的のキーを探す、最も基本的な探索アルゴリズムです。データがソート(整列)されていなくても使用できる実装が非常にシンプルで理解しやすい欠点:データ数が多いほど処理時間が長くなり、システムの効率を低下させる可能性がある入出力のイメージは以下の通りです。入力:ソートされていない要素のリスト、探索キー出力:・成功 … キーが見つかった場合・失敗 … キーが見つからなかった場合例1:線形探索