ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
関数とは、一連の処理に名前を付けてまとめ、何度でも呼び出せるようにした仕組みです。同じ計算や処理をプログラムのあちこちに書く代わりに関数化しておけば、呼び出すだけで再利用でき、修正も一箇所で済みます。ここではC++を例に、関数の定義(作り方)と呼び出し(使い方)を、構文・引数・戻り値の観点から整理します。
関数の構文
C++の関数は「戻り値の型 関数名(引数リスト) { 処理 }」という形で定義します。引数は外から渡す入力、戻り値はreturnで呼び出し元へ返す結果です。
#include <iostream>
using namespace std;
// 2つの整数を受け取り、その和を返す関数
int sum(int x, int y) {
int s = x + y;
return s; // 戻り値を返して呼び出し元へ戻る
}
int main() {
int result = sum(1, 2); // 関数の呼び出し
cout << result << "\n";
return 0;
}
このプログラムを実行すると、sum(1, 2) が 3 を返し、次のように出力されます。
3
戻り値を返さない関数は型に void を指定します。この場合 return; は省略可能です。
void greet(string name) {
cout << "Hello, " << name << "!\n";
}
使い方・手順
1. プロトタイプ宣言(前方宣言):C++は上から順にコンパイルするため、関数を呼び出す位置より後ろに定義を書く場合は、ファイル先頭で「宣言」だけ先に書いておきます。
#include <iostream>
using namespace std;
int sum(int x, int y); // プロトタイプ宣言(本体は後ろ)
int main() {
cout << sum(10, 20) << "\n"; // 定義より前で呼べる
return 0;
}
int sum(int x, int y) { // 関数の定義(本体)
return x + y;
}
2. 呼び出し:関数名に引数を渡して呼びます。戻り値は変数に受け取るか、式の中で直接使えます。
int a = sum(3, 4); // 変数に代入
cout << sum(a, 5) << endl; // 式の中で直接使用
実用例・Tips
値渡しと参照渡し:C++の引数は既定で値渡し(コピーが渡る)です。関数内で引数を書き換えても呼び出し元の変数は変わりません。元の変数を変更したい場合は参照渡し(&)を使います。
// 参照渡し:呼び出し元の x が書き換わる
void doubleIt(int &x) {
x = x * 2;
}
int main() {
int n = 5;
doubleIt(n); // n は 10 になる
cout << n << "\n";
}
関数オーバーロード:同じ名前でも引数の型や個数が異なれば複数定義できます。コンパイラが呼び出し時の引数から適切な方を選びます。
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; } // 同名・別引数でOK
デフォルト引数:引数に既定値を設定すると、呼び出し時に省略できます。
int power(int base, int exp = 2) { // exp 省略時は 2
int r = 1;
for (int i = 0; i < exp; i++) r *= base;
return r;
}
// power(3) は 9、power(3, 3) は 27
注意点・落とし穴
- 戻り値の取り忘れ:戻り値がある関数で
returnを書き忘れると未定義動作になる。 - 型の不一致:戻り値の型と
returnする値の型が合わないと暗黙変換が起き、想定外の結果になることがある。 - 未宣言エラー:定義より前で呼ぶならプロトタイプ宣言が必須。忘れると「未宣言」エラーになる。
- 巨大オブジェクトの値渡し:大きな構造体やクラスを値渡しすると毎回コピーが発生して遅い。
const参照(const T&)で渡すと効率的。 - ローカル変数の参照を返さない:関数内で作ったローカル変数の参照やポインタを返すと、関数終了後に無効になる。
関連リンク
関数は制御構文や変数と並ぶプログラミングの基礎です。「文法」カテゴリの変数・演算子・制御構文の各記事と合わせて学ぶと、関数を組み合わせた実用的なコードが書けるようになります。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?