LoginSignup
8
4

More than 3 years have passed since last update.

C言語 void型ってなんぞ

Last updated at Posted at 2020-03-06

voidってなに?

C言語はデータ型によって情報のサイズや、情報の種類を決めている。
void型はそのデータ型の一つ。char, int, floatなどのデータ型と同じデータ型という概念。

ただし、void型の変数は作れない

void i; // NGです

void型とは、型がないことを示す型

0の概念と似ている。無いことを明示的に示す。
そう言えばあんま意識してなかったけど、ここでも使われている。

int main(void)
{
    return 0;
}

main(void)は引数を必要としないことを明示している。

void func1() {
}

void func2(void) {
}

int main(int argc, char *argv[]) {
    func1();
    func1("Hello"); // エラーにならない
    func2();
    func2("Hello"); // エラーになる
}

4通りの関数

関数には4通り考えられる。

  • 引数あり、戻り値あり
  • 引数あり、戻り値なし(void)
  • 引数なし(void)、戻り値あり
  • 引数なし(void)、戻り値なし(void)

無いということを示すためのvoidがあることで以下の型の体型がキレイに維持できる。

void func(void){
    // コード
}

voidのポインタ型(汎用ポインタ)

voidも型なので、voidのポインタ型も存在する。

参照先のデータ型がないポインタという意味。
voidのポインタ型を使った参照先への読み書きはできない
数字を0で割れないみたいなもん。ルールを作るための存在だから例外の扱い。

できることは、アドレスの格納のみ

様々な型のアドレスを受け入れることに使えるほか、意図的に、アドレスだけを使用して、メモリアクセスができないように制限するといった使い方も可能。

この様々な型を受け入れられる性質から、
別名、汎用ポインタと言われる。

参考

NULL と '\0' の違い
http://www.kis-lab.com/serikashiki/C/C01.html

C言語関数辞典 - C言語用語集 空ポインタ(null pointer)
http://www.c-tipsref.com/words/null_pointer.html

C言語 void型の意味と使い方【void型ポインタの扱い方も解説】
https://monozukuri-c.com/langc-funclist-void/

8
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4