新人Y子のプログラミングのお部屋12

前回の宿題
以下のプログラムを実行したとき、
1) 出力内容を予想してください。
2) 実際に「coding ground」で実行して出力結果を確認してください。

[speech_bubble type=”std” subtype=”R1″ icon=”sanoyu-normal.png” name=”新人Y子”]7行目のprintf命令がよくわかりませんでしたので、解説をお願いします。
[/speech_bubble]
[speech_bubble type=”std” subtype=”L1″ icon=”itokuma-normal.png” name=”しげちゃん先生”]まず最初に、今までprintfはシステムで用意された「命令」と表現していましたが、呼び出し方は通常の関数と全く一緒なんです。
ですので、printfについては、今後「命令」ではなく、「関数」と呼ぶことにしますね。
[/speech_bubble]
[speech_bubble type=”std” subtype=”R1″ icon=”sanoyu-normal.png” name=”新人Y子”]はい。
[/speech_bubble]
[speech_bubble type=”std” subtype=”L1″ icon=”itokuma-normal.png” name=”しげちゃん先生”]さて、printfは「関数」ですので「引数」が定義されています。
以下は、printfの引数定義です。

[/speech_bubble]
[speech_bubble type=”std” subtype=”R1″ icon=”sanoyu-normal.png” name=”新人Y子”]このprintfの引数の定義はどこに書かれているのでしょうか?
[/speech_bubble]

[speech_bubble type=”std” subtype=”L1″ icon=”itokuma-normal.png” name=”しげちゃん先生”]「stdio.h」ファイルの中に記載されています。
[/speech_bubble]

[speech_bubble type=”std” subtype=”R1″ icon=”sanoyu-normal.png” name=”新人Y子”]なるほど!includeする意味が分かってきました。
includeについては、新人Y子プログラミングのお部屋8 で説明してもらいましたね。
[/speech_bubble]

[speech_bubble type=”std” subtype=”L1″ icon=”itokuma-normal.png” name=”しげちゃん先生”]はい。
ちなみに、関数の引数定義のことを、「プロトタイプ宣言」といいます。

[/speech_bubble]

[speech_bubble type=”std” subtype=”R1″ icon=”sanoyu-hatena.png” name=”新人Y子”]printfのプロトタイプ宣言の引数、う~ん・・・

暗号のようで意味がよくわからないです。
そもそも、printfに引数は何個あるのでしょうか?
[/speech_bubble]

[speech_bubble type=”std” subtype=”L1″ icon=”itokuma-normal.png” name=”しげちゃん先生”]引数の境目はカンマですので、カンマで分離すると、printf関数の引数が、何個あるのか分かります。
1個目が、「const char * restrict format」
2個目が、「…」
[/speech_bubble]

[speech_bubble type=”std” subtype=”R1″ icon=”sanoyu-normal.png” name=”新人Y子”]ということは、printf関数の引数は2個という事ですか?
[/speech_bubble]

[speech_bubble type=”std” subtype=”L1″ icon=”itokuma-normal.png” name=”しげちゃん先生”]違います(が、惜しいです)
引数を説明していきますね。
[/speech_bubble]

[speech_bubble type=”std” subtype=”L1″ icon=”itokuma-normal.png” name=”しげちゃん先生”]1個目の「const char * restrict format」の引数の型は、「文字列型」を意味します。
7行目のprintf関数呼び出しの “%d + %d = %d” の文字列に該当します。
[/speech_bubble]
[speech_bubble type=”std” subtype=”L1″ icon=”itokuma-normal.png” name=”しげちゃん先生”]2個目の「…」は、0個以上の可変の引数を指定できることを意味します。
7行目のprintf関数呼び出しでは、3個「a, b, c」引数を渡しています。
[/speech_bubble]
[speech_bubble type=”std” subtype=”R1″ icon=”sanoyu-normal.png” name=”新人Y子”]という事は、printf関数は、最低1個の引数が必要という事ですね。
[/speech_bubble]
[speech_bubble type=”std” subtype=”L1″ icon=”itokuma-normal.png” name=”しげちゃん先生”]その通りです。
[/speech_bubble]
[speech_bubble type=”std” subtype=”R1″ icon=”sanoyu-normal.png” name=”新人Y子”]では、今回何で4つもの引数をprintfに渡したのでしょう?
[/speech_bubble]
[speech_bubble type=”std” subtype=”L1″ icon=”itokuma-normal.png” name=”しげちゃん先生”]それは、また次回解説します。
[/speech_bubble]
[speech_bubble type=”std” subtype=”R1″ icon=”techtrageman-normal.png” name=”テクトレージマン”]次回に続く[/speech_bubble]

新人Y子プログラミングのお部屋の別記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次