| この記事の要点 |
|---|
|
C++の関数とは
関数とは、ひとまとまりの処理に名前を付け、必要なときに何度でも呼び出して使えるようにした仕組みです。同じ処理を一か所にまとめておくことで、プログラムが読みやすくなり、修正もしやすくなります。
C++の関数は、次のような形で定義します。先頭に処理結果として返す値の型(戻り値型)、続いて関数の名前、丸かっこの中に受け取る値(引数)、波かっこの中に実際の処理を書きます。
戻り値型 関数名(引数の型 引数名, ...) |
定義した関数は、名前のうしろに丸かっこを付けて呼び出します。たとえば printf("hello"); と書くと、printfという名前の関数に "hello" という値を渡して実行する、という意味になります。値を返さない関数の戻り値型には void を使います。
C++には、自分で定義しなくても最初から使える関数が多数用意されています。その代表が、画面表示やキーボード入力を担当する標準入出力関数です。まずはこれらの関数の使い方を覚えると、プログラムの動きを確認しながら学習を進められます。
標準入出力関数の概要
標準入出力とは、プログラムと利用者の間でやり取りする基本的な入力(キーボードなど)と出力(画面など)のことです。C++では、C言語から受け継いだ printf・scanf と、C++で追加された cout・cin の両方が使えます。下の表で、よく使う関数の役割を整理します。
| 名前 | 分類 | 役割 |
|---|---|---|
| printf | 出力 | 書式(フォーマット)を指定して文字や数値を画面に表示する |
| cout | 出力 | << 演算子でつないだ値を順番に画面へ出力する |
| cin | 入力 | >> 演算子でキーボードから入力された値を変数に読み込む |
| scanf | 入力 | 書式を指定してキーボードから値を読み込む(printfと対になる) |
printf と scanf は <cstdio> に、cout と cin は <iostream> に用意されています。これらを使うには、プログラムの先頭で対応するヘッダを取り込みます。
#include <cstdio> // printf, scanf を使うとき |
printf は書式指定でこまかく表示を整えられ、cout は型を意識せず手軽に書けるのが特徴です。入力側の cin は、>> 演算子で読み込む値を変数(パラメータ)として受け取ります。それぞれの具体的な使い方は、下記の各記事で順に確認できます。
自作関数の基本
標準入出力関数のように、自分で新しい関数を作ることもできます。共通する処理を関数にまとめると、同じコードを何度も書かずに済み、プログラム全体の見通しがよくなります。
関数を自作するには、戻り値型・関数名・引数・処理内容を決めて定義し、必要な場所で名前を書いて呼び出します。定義の書き方や引数・戻り値のやり取りといった詳しい内容は、別の記事で扱います。
- 関連: 関数の定義
子記事へのリンク
このカテゴリの記事を、出力(画面に表示する)と入力(キーボードから読み込む)に分けてまとめました。学びたいテーマから読み進めてください。
出力(printf / cout)
- printf 標準入出力関数 ― printf の基本的な使い方と書式の考え方
- printfで数値を表示する方法 ― 整数や小数などの数値を画面に表示する方法
- coutによるコンソール出力 ― << 演算子を使った cout の出力方法
入力(cin)
- cinによる入力(パラメータ渡し) ― cin で入力された値を変数(パラメータ)に読み込む方法
よくある質問
Q. printf と cout は、どちらを使えばよいですか。
どちらも画面への出力に使えます。printf は書式指定でこまかく表示を整えたいときに、cout は型を気にせず手軽に書きたいときに向いています。まずは両方の書き方を知っておき、状況に合わせて使い分けるとよいでしょう。
Q. 標準入出力関数を使うのに、毎回 #include は必要ですか。
はい。printf や scanf を使うときは <cstdio> を、cout や cin を使うときは <iostream> を、プログラムの先頭で取り込む必要があります。取り込みを忘れると、関数の名前が見つからずエラーになります。
- 環境構築
- コンパイルと実行方法
- 文法
- 関数
人気ページ
- 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アノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38