ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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 と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?