【C言語】第5章第1回:関数とは何か?基礎から学ぶ
関数はC言語プログラムの基本的な構成要素であり、コードを効率的に管理するための重要な技術です。この章では、関数の基本を基礎から詳しく学びます。
1. 関数の基本概念
1.1 関数とは何か?
関数は、一連の処理を1つの名前でまとめたもので、以下の特徴を持ちます:
- 再利用可能なコードを作成できる。
- プログラムの読みやすさと保守性を向上させる。
- 複雑なタスクを分割して処理できる。
関数の基本的な構造:
return_type function_name(parameter_list) {
// 関数の処理内容
return value;
}
ここで:
return_type
: 関数が返す値の型。function_name
: 関数の名前。parameter_list
: 関数に渡す引数のリスト(空の場合もある)。
1.2 関数の基本例
例:2つの整数を足す関数
#include <stdio.h>
// 関数の宣言
int add(int a, int b);
int main() {
int result = add(5, 3); // 関数の呼び出し
printf("Result: %d\n", result);
return 0;
}
// 関数の定義
int add(int a, int b) {
return a + b; // 結果を返す
}
コードの解説:
int add(int a, int b)
: 2つの整数を受け取り、その合計を返す関数。int result = add(5, 3);
: 関数を呼び出して結果をresult
に格納。return a + b;
: 合計を呼び出し元に返す。
2. 関数の種類
2.1 戻り値のない関数(void関数)
関数が値を返さない場合、戻り値の型としてvoid
を使用します。
例:メッセージを表示する関数
#include <stdio.h>
void printMessage() {
printf("Hello, World!\n");
}
int main() {
printMessage(); // 関数の呼び出し
return 0;
}
2.2 引数のない関数
関数が引数を取らない場合、void
を引数リストに指定します。
例:現在の時刻を表示する関数(擬似コード)
#include <stdio.h>
void displayTime() {
// 実際の実装はシステム依存
printf("Current Time: 12:00\n");
}
int main() {
displayTime(); // 関数の呼び出し
return 0;
}
3. 関数の引数と戻り値
3.1 値渡し(Pass by Value)
引数として渡されるデータが関数内でコピーされ、関数内での変更が呼び出し元に影響しません。
例:値渡しの例
#include <stdio.h>
void modifyValue(int x) {
x = 10; // ローカル変数の変更
}
int main() {
int a = 5;
modifyValue(a);
printf("a: %d\n", a); // 元の値は変更されない
return 0;
}
3.2 ポインタを使った参照渡し(Pass by Reference)
ポインタを使用することで、関数内での変更が呼び出し元に影響します。
例:参照渡しの例
#include <stdio.h>
void modifyValue(int *x) {
*x = 10; // ポインタを使って元の変数を変更
}
int main() {
int a = 5;
modifyValue(&a);
printf("a: %d\n", a); // 値が変更される
return 0;
}
4. 練習問題
以下の課題に挑戦して、関数の基本を実践的に学びましょう。
- 2つの整数を掛け算する関数を作成し、その結果を表示してください。
- 文字列を引数として取り、その長さを返す関数を作成してください。
- ポインタを使って、2つの整数を交換する関数を作成してください。
5. 練習問題の解答と解説
問1の解答
#include <stdio.h>
int multiply(int a, int b) {
return a * b;
}
int main() {
int result = multiply(4, 5);
printf("Result: %d\n", result);
return 0;
}
この関数は2つの整数を掛け算し、その結果を返します。
6. まとめ
関数を理解することで、コードを効率的に再利用できるようになります。次の章では、さらに高度な関数の使用方法を学びます。