補足資料(1.5回目) C言語の関数
🧩 補足資料:C言語の関数の基本
🧠 関数とは?
C言語の関数は、処理をひとまとめにして何度も呼び出せる仕組みです。
プログラムの再利用性・可読性を高めるために使います。
#include <stdio.h>
int main() {
hello(); // 関数呼び出し
return 0;
}
// 関数定義
void hello() {
printf("Hello, world!\\n");
}🔹 宣言と定義の違い
名称 | 役割 | 書く場所 | 例 |
|---|---|---|---|
関数宣言(プロトタイプ宣言) | 関数があることをコンパイラに知らせる | mainより上 |
|
関数定義 | 実際の処理内容を書く | mainより下でもOK |
|
💡 ポイント
- 宣言と定義を分けることで、関数を別ファイルに分割できる。
- 宣言だけをヘッダファイル(
.h)に書くのが一般的。
🔸 引数と仮引数の違い
種類 | 意味 | 例 |
|---|---|---|
仮引数(parameter) | 関数の受け取り側の変数 |
の a,b |
実引数(argument) | 関数を呼び出すときに渡す値 |
の 3,5 |
🧭 イメージ図
int add(int a, int b) ← 仮引数
↑ ↑
| |
add(3, 5); ← 実引数🧷 ポインタ渡し
関数に変数の**アドレス(場所)**を渡すことで、呼び出し元の値を直接変更できます。
#include <stdio.h>
void addOne(int* x) {
*x = *x + 1;
}
int main() {
int num = 10;
addOne(&num); // 変数のアドレスを渡す
printf("%d\\n", num); // → 11
}💬 ポイント
int* xは「int型のポインタ」*xは「ポインタの指す実際の値」- 呼び出し元の変数を直接書き換えることができる
⚙️ 戻り値・void・手続きと関数
C言語の関数には、値を返す関数と**値を返さない手続き(void関数)**の2種類があります。
// 値を返す関数
int add(int a, int b) {
return a + b;
}
// 値を返さない(void関数)
void printHello() {
printf("Hello!\\n");
}💡 return文
- 関数の実行を終了し、呼び出し元に値を返す。
- void関数では return を省略可能。
🧾 C言語の関数まとめ
分類 | 説明 | 例 |
|---|---|---|
宣言(プロトタイプ) | 関数の存在を知らせる |
|
定義 | 実際の処理を書く |
|
実引数/仮引数 | 呼び出す値と受け取る変数 |
/
|
値渡し | 値のコピーを渡す | 元の変数は変わらない |
ポインタ渡し | アドレスを渡す | 元の変数が変わる |
戻り値 | 処理結果を返す |
を使う |
void関数 | 戻り値なしの手続き | 画面出力など |
🧠 まとめ
- 宣言=関数の存在を伝える
- 定義=関数の中身を書く
- 引数はコピーか参照かで挙動が変わる
- ポインタ渡しはC言語の“参照渡し”のようなもの
- 戻り値の有無で「手続き」と「関数」を区別できる