第13章 関数
13.1 概要
省略
 
13.2 関数の基本形
/* 関数の記述 */
省略
/* 関数の基本構成 */
省略
/* 実引数と仮引数 */
省略
/* 関数型としてのvoid */
省略
/* 値を返す方法 */
省略
/* 戻り値を無視する */
省略
/* 引数の型変換(型の調整) */
省略
 
13.3 関数プロトタイプ
/* 関数プロトタイプの役目 */
省略
/* 自作関数のプロトタイプ */
省略
/* 標準ライブラリ関数のプロトタイプ */
省略
/* プロトタイプ宣言の省略 */
省略
 
13.4 関数へのデータ渡しの方法
/* データを渡す3つの方法 */
13_13-1
/* 値による呼び出し */
省略
/* アドレスによる呼び出し */
省略
/* 参照による呼び出し */
13_13-2
/* 定数の参照渡し */
13_13-3
/* 配列を渡す */
13_13-4
/* 多次元配列を渡す */
13_13-5
/* 文字列を渡す */
13_13-6
 
13.5 戻り値を返す方法
/* 値を返す */
省略
/* ポインタを返す */
13_13-7
13_13-8
/* 参照を返す */
13_13-9
13_13-10
/* 関数を左辺値にする */
13_13-11
 
13.6 main関数への引数渡し
コマンドラインから入力した文字列は、main()関数に引数として渡すことができます。
この機能は指定したファイルをオープンする場合などに活用されます。
main()関数へ渡せる引数は、基本的には、
引数の総個数
引数の文字列実体(を指すポインタ)
のふたつです。
引数の名前は自由ですが、argcとargvを用いるのが慣例です。
記述は
int main(int argc, char *argv[]) // このように書く
int main(int argc, char **argv) // これでも実質同じになる
となります。
この各引数には、
argc // 引数の数
argv[0] // プログラム名の文字列
argv[1] // 1番目の引数文字列
argv[2] // 2番目の引数文字列
という形でデータが渡されます。
たとえば仮にプログラムfilecopy.exeを作り、コマンドラインから
filecopy aaa.txt bbb.txt /v
と入力したとすると、その引数内容は
argc // 4
argv[0] // filecopy
argv[1] // aaa.txt
argv[2] // bbb.txt
argb[3] // /v
となります。
13_13-12
 
13.7 再帰コール
/* 再帰コールで守ること */
省略
/* 階乗計算をする */
13_13-13
/* ハノイの塔問題 */
省略
 
13.8 デフォルト引数
/* 全引数の省略 */
省略
/* 部分的な引数省略 */
省略
/* デフォルト引数の利用 */
13_13-14
 
13.9 名前なし仮引数
省略
 
13.10 インライン関数
/* インライン関数の機能 */
インライン関数を使うと、可読性向上に寄与する関数形式でありながら、
関数呼び出しというオーバーヘッドのない高速処理が可能になります。
/* インライン関数の記述 */
省略
/* インライン関数の安全性 */
13_13-15
/* クラス内のインライン関数 */
省略
 
13.11 引数の省略記号(...)
int printf(const char *format, ...);
 
13.12 関数指定子
inline // インライン関数を宣言する
virtual // 仮想関数を宣言する
explicit // 暗黙の型変換を禁止するコンストラクタ