Cでは、void
複数の無関係なものに使用されます。使用目的に応じて、その意味はユニットタイプ、空のタイプ、または他の何かになります。
void
が(void*
void とは対照的に)単独で使用される場合、それはユニット型、つまり単一の値を持つ型です。返さvoid
れる関数は「何も返さない」と言われますが、これが本当に意味するのは、情報を返さないことです。これらはビットの情報を返します。つまり、2 0 = 1の異なる値を含む型の値、つまりユニット型を返します。020= 1
これは空のタイプではありません。空のタイプを返す関数は、そのタイプの値がないため、値を返すことはできません。戻り値の型が空の関数は、永久にループするか、プログラムを中止するか、例外(longjmp
)を発生させます(または、標準Cを超える機能を使用して別のスレッドまたはプロセスに制御を移すなどして戻りません)。混乱を避けるために、void
Cでは空の型の代わりに使用するのが一般的です(Cには空の型はありません)。
このvoid
タイプにはビットのストレージが必要です。Cはすべてのオブジェクトがゼロ以外のストレージバイト全体を占有しているため、typeのオブジェクトを作成することは禁じられており、値(値が省略されたステートメント)を返す特別な構文があります。typeの値を生成する構文はありませんが、戻り値の型が関数から返されるたびにその値が存在します。0void
void
return
void
void
Cには、可能な型を許可するという意味で、ボトム型がありません。不完全な型でさえ、その値の一般的な性質、たとえばポインターや構造体、共用体、関数を指定します。しかしvoid*
、非関数型へのポインターです。これはオブジェクトポインター型の代数の最小要素です。つまり、一番下のオブジェクトポインター型です。T*
where T
が非void型である一般的な場合とは異なり、void*
typeの値へのポインターの型ではなく、void
未指定の型の値へのポインターの型です。