void型関数

 下記のプログラムは、ここまでご紹介したプログラムです。比較してみてください。

#include <stdio.h>

int plus1(int x) {
    int y;
    y = x + 1;
    return y;
}

int main(int argc, const char * argv[])
{
    
    // insert code here...
    int x = 1;
    x = plus1(x);
    
    printf("x = %d", x);
    
    return 0;
}

 もうひとつが、こちらです。

#include <stdio.h>

void plus1(int *x)
{
    *x = *x + 1;
}

int main(int argc, const char * argv[])
{
    
    // insert code here...
    int a;
    
    a = 1;
    plus1(&a);
    
    printf("a = %d\n", a);
    
    return 0;
}

 前回は戻り値と関数にデータ型をつけることを説明しました。しかし、以前ポインタでご紹介したplus1関数では、return文は用いていません。データ型も、int型ではなくvoid型となっています。どういうことでしょうか。

 void型は、今までの数値型や文字型とは異なり、戻り値が無い関数のデータ型のことです。処理の結果を戻す必要が無い場合は、わざわざint型にして「return 0;」としなくても、void型で関数を定義すれば、最後にreturn文を書く必要はありません。

 サブルーチンを使う用途によってvoid型にすべきか否かは変わりますが、上記のようにポインタで変数の中の値を操作してしまう場合や、画面に表示するだけといった場合であれば、void型で良いでしょう。

 Tips:main関数もvoid型とすることは可能です。void型にすれば、最後の「return 0;」は要らなくなります。main関数がint型かvoid型かで違いが出ることはありません。お好きな方でプログラムを書いていって下さい。

■スポンサーリンク

このページの先頭へ