質問: "void" の未定義サイズについて理解します
C プログラミングでは、キーワード "void" は型の欠如を表します。ここで疑問が生じます: "void" のサイズは何ですか?
答え:
型 "void" には C で定義されたサイズがありません。オブジェクトまたはポインターに対して有効な型であるため、それをそのまま使用しようとするとコンパイル エラーが発生します。具体的には、次のステートメント:
void n;
は、許可されていない void 型の変数を宣言しようとしているため無効です。
拡張: " による割り当てとポインター演算void" ポインタ
void にはサイズがありませんが、ポインタの型として使用できます。ただし、そのようなポインタは、特定のタイプやサイズのデータを指しません。
ステートメント
void *p = malloc(sizeof(void));
は、「void」にメモリを割り当てようとしているため、コンパイル時エラーが発生します。 "タイプはナンセンスです。関数 malloc には、メモリを割り当てるための有効なデータ型が必要です。
GCC では、sizeof(void) 式は驚くべきことに 1 と評価されます。これは、サイズを「void」に割り当てているように見えるかもしれませんが、単に依存すべきではない実装の詳細。
さらに、「void」ポインターのポインター算術 p は未定義であり、使用すべきではありません。これは、p が指すデータのタイプが不明であり、ポインターのインクリメントが何を意味するかを判断できないためです。
以上がC の「void」のサイズはどれくらいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。