C++ 基礎
首都大学東京 田川研究室
戻る

関数(サブルーティン)

関数の定義は以下のようになります。funcaという関数を定義、実行します。
#include <stdio.h>
int funca(int a , double b)
{
    if(b < 3)
        return a;

    return 0;
}



int main()
{
    int ia;
    double da;
    float fa;

    da = 3.2;
    ia = funca(4 , da);
    printf("ia = %d\n" , ia);

    da = 2.2;
    ia = funca(4 , da);
    printf("ia = %d\n" , ia);
    

    da = 4.2;
    funca(4 , da);
    printf("ia = %d\n" , ia);

    return 0;
}
関数に必要な機能は、引数、戻り値です。そして関数はreturnが呼び出された時点で、制御を呼び出し元へ返します。ついでに値も返せます。関数が返してきた値は代入演算子で格納先を決めることができます。
3つ目の呼び出しのように、戻り値を受け取らなくても大丈夫です。この場合、もちろんiaの値は変わりません。

基本的に、関数が受け取れる引数は、関数の定義に従います。funcaは引数を2つしか受け取れません。printfという関数はいくらでも引数を受け取れたと思いますが、あれは特殊なのです。

関数の呼び出しだけで動く

ごらんのように制御は関数で受け取ります。プログラムがOSから制御を受け取るためにはmain()という関数を定義しなければなりません。OSはプログラムがダブルクリックされたとき、main()を呼び出します。
さてさて、戻り値が必要ない場合、voidを使ってください。
#include <stdio.h>
void funca()
{
    printf("ああ、voidのテスト中\n");
}

ちょっと簡単な例が思いつきませんでしたが、上記関数も立派に電気代が無駄になる関数です。引数も必要ない場合は書かなければ良いのです。void型関数の場合、途中で処理をやめることはできず、最後まで実行した時点で制御が呼び出し元へ帰ります。(C++の例外処理機能を使えば途中でやめられますが。)