【C言語】第5章第3回:引数と戻り値の基本
引数と戻り値を正しく理解することで、関数を効果的に活用できます。この章では、引数と戻り値の仕組みを基礎から丁寧に解説します。
1. 引数の基本
1.1 引数とは何か?
引数は、関数に渡されるデータのことです。関数は引数を使って、外部からデータを受け取り処理を行います。
例:2つの整数を足し算する関数
#include <stdio.h>
// 関数の宣言
int add(int a, int b);
int main() {
int result = add(10, 20); // 関数呼び出し時に引数を渡す
printf("Sum: %d\n", result);
return 0;
}
// 関数の定義
int add(int a, int b) {
return a + b; // 引数を加算して返す
}
ステップバイステップ解説:
int add(int a, int b);
: 関数のプロトタイプを宣言します。int result = add(10, 20);
: 呼び出し時に引数10
と20
を渡します。return a + b;
: 渡された値を加算し、結果を返します。
ポイント:
- 引数はカンマで区切って指定します。
- 渡された値は、関数内で変数として扱われます。
2. 戻り値の基本
2.1 戻り値とは何か?
戻り値は、関数が処理結果として呼び出し元に返す値のことです。戻り値の型は、関数の定義で指定します。
例:整数の平方を計算する関数
#include <stdio.h>
// 関数の宣言
int square(int num);
int main() {
int result = square(5); // 関数呼び出し
printf("Square: %d\n", result);
return 0;
}
// 関数の定義
int square(int num) {
return num * num; // 平方を計算して返す
}
ステップバイステップ解説:
int square(int num);
: 関数のプロトタイプを宣言します。int result = square(5);
: 引数5
を渡して関数を呼び出します。return num * num;
: 平方値を計算して返します。
ポイント:
- 戻り値の型を正しく指定することで、エラーを防ぎます。
void
を使用すると、値を返さない関数を作成できます。
3. 引数と戻り値の応用
3.1 ポインタを使った参照渡し
ポインタを使用すると、関数内で引数を直接変更できます。
例:2つの整数を交換する関数
#include <stdio.h>
// 関数の宣言
void swap(int *x, int *y);
int main() {
int a = 5, b = 10;
printf("Before swap: a = %d, b = %d\n", a, b);
swap(&a, &b); // ポインタを渡す
printf("After swap: a = %d, b = %d\n", a, b);
return 0;
}
// 関数の定義
void swap(int *x, int *y) {
int temp = *x; // xが指す値を保存
*x = *y; // yが指す値をxに代入
*y = temp; // 保存した値をyに代入
}
ステップバイステップ解説:
void swap(int *x, int *y);
: ポインタを引数として受け取る関数を宣言します。swap(&a, &b);
: 変数a
とb
のアドレスを渡します。*x
と*y
: ポインタを使って実際の値を操作します。
4. 練習問題
以下の課題に挑戦して、引数と戻り値の基本を深く理解しましょう。
- 2つの浮動小数点数を引数として受け取り、その平均を計算して返す関数を作成してください。
- 文字列を引数として受け取り、その文字数を返す関数を作成してください。
- ポインタを使って、配列内の最大値を返す関数を作成してください。
5. 練習問題の解答と解説
問1の解答
#include <stdio.h>
// 平均を計算する関数
float calculateAverage(float a, float b) {
return (a + b) / 2.0;
}
int main() {
float num1 = 5.5, num2 = 10.5;
float avg = calculateAverage(num1, num2);
printf("Average: %.2f\n", avg);
return 0;
}
この関数は、渡された2つの浮動小数点数の平均を計算して返します。
6. まとめ
引数と戻り値を適切に利用することで、関数の効率と再利用性を向上させることができます。次回は、より高度な関数の活用方法を学びます。