ホームページ  >  記事  >  バックエンド開発  >  C の「void」のサイズはどれくらいですか?

C の「void」のサイズはどれくらいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-19 17:25:03810ブラウズ

What is the Size of

質問: "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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。