13.1 概要
省略
13.2 関数の基本形
/* 関数の記述 */
省略
/* 関数の基本構成 */
省略
/* 実引数と仮引数 */
省略
/* 関数型としてのvoid */
省略
/* 値を返す方法 */
省略
/* 戻り値を無視する */
省略
/* 引数の型変換(型の調整) */
省略
13.3 関数プロトタイプ
/* 関数プロトタイプの役目 */
省略
/* 自作関数のプロトタイプ */
省略
/* 標準ライブラリ関数のプロトタイプ */
省略
/* プロトタイプ宣言の省略 */
省略
13.4 関数へのデータ渡しの方法
/* データを渡す3つの方法 */
/* 値による呼び出し */
省略
/* アドレスによる呼び出し */
省略
/* 参照による呼び出し */
/* 定数の参照渡し */
/* 配列を渡す */
/* 多次元配列を渡す */
/* 文字列を渡す */
13.5 戻り値を返す方法
/* 値を返す */
省略
/* ポインタを返す */
/* 参照を返す */
/* 関数を左辺値にする */
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.7 再帰コール
/* 再帰コールで守ること */
省略
/* 階乗計算をする */
/* ハノイの塔問題 */
省略
13.8 デフォルト引数
/* 全引数の省略 */
省略
/* 部分的な引数省略 */
省略
/* デフォルト引数の利用 */
13.9 名前なし仮引数
省略
13.10 インライン関数
/* インライン関数の機能 */
インライン関数を使うと、可読性向上に寄与する関数形式でありながら、
関数呼び出しというオーバーヘッドのない高速処理が可能になります。
/* インライン関数の記述 */
省略
/* インライン関数の安全性 */
/* クラス内のインライン関数 */
省略
13.11 引数の省略記号(...)
int printf(const char *format, ...);
13.12 関数指定子
inline // インライン関数を宣言する
virtual // 仮想関数を宣言する
explicit // 暗黙の型変換を禁止するコンストラクタ