C言語で引数なしの関数を定義する

539, 2022-08-18

目次

C言語で引数がない関数を定義

C言語で引数が無い関数を定義するには↓のように関数を書きます。

void func(void) {
}

関数名の後のカッコの中にvoidを書きます。
こうするとこの関数は引数を持たなくなります。

voidは何もないことを表す型です。
voidは引数のほかには返り値の型にも使うことができます。

voidの必要性

実は関数名の後のカッコの中にvoidを書かなくても関数は定義できます。

void func() {
}

しかしこの定義の関数はC言語では可変長引数扱いになります。
ですので「引数が何もない」状態を明示したい場合はvoidを書くのがだいじです。

このような関数の引数は可変長引数扱いになるので呼び出し側では引数を渡してもエラーになりません。

void func() {
}

int main(void) {
    func(1, 2, 3);
    return 0;
}

voidを書いておくと引数を渡したときにエラーになるのでコードを厳格にしたい場合はvoidを書くようにしましょう。

引数がvoidの関数に引数を渡すと?

引数がvoidの関数に引数を渡したらどうなるのでしょうか?

void func(void) {
}

int main(void) {
    func(123);
    return 0;
}

↑のコードをコンパイルするとGCCでは↓のようなエラーが出力されます。

error.c: In function ‘main’:
error.c:5:5: error: too many arguments to function ‘func’
    5 |     func(123);
      |     ^~~~
error.c:1:6: note: declared here
    1 | void func(void)
      |      ^~~~

error: too many arguments to function ‘func’」とあります。
これは日本語にすると「funcの引数が多すぎます」というエラーになります。

つまりfunc()は引数がvoidなので何も引数を持ちません。
ですので引数を渡すと引数が多すぎるとエラーになるわけです。

voidの意味は?

voidは辞書では「空虚」とか「無効の」という意味を持ちます。
つまり引数にvoidを書くとその関数の引数は空虚で無効なものになるということですね。

voidの語源は「vacuus(空っぽ)」です。
voidの元々の意味をたどると空っぽという意味にたどり着くわけです。

voidの発音は?

voidの発音は「ヴォイド」です。

おわりに

引数のない関数を定義したい場合はカッコの中にvoidを書きましょう。

(^ _ ^)

空っぽ

(・ v ・)

虚無



この記事のアンケートを送信する