質問: "void" の未定義サイズについて理解する
C プログラミングでは、キーワード "void" は型の欠如を表します。ここで疑問が生じます: "void" のサイズは何ですか?
答え:
型 "void" には C では定義されたサイズがありません。オブジェクトまたはポインタとして有効な型であるため、それをそのまま使用しようとするとコンパイル エラーが発生します。具体的には、ステートメント:
void n;
は、許可されていない void 型の変数を宣言しようとしているため、無効です。
拡張子: 「void」ポインタを使用した割り当てとポインタ演算
「void」にはサイズがありませんが、ポインタの型として使用できます。ポインタ。ただし、そのようなポインターは、特定のタイプやサイズのデータを指しません。
ステートメント:
void *p = malloc(sizeof(void));
results 「void」型にメモリを割り当てようとするのは無意味であるため、コンパイル時エラーが発生します。関数 malloc には、メモリを割り当てるための有効なデータ型が必要です。
GCC では、sizeof(void) 式は驚くべきことに 1 と評価されます。これは、サイズを「void」に割り当てているように見えるかもしれませんが、単に依存すべきではない実装の詳細。
さらに、「void」ポインタのポインタ算術演算 p は未定義であり、使用すべきではありません。これは、p が指すデータのタイプが不明であり、ポインタのインクリメントが何を意味するかを判断できないためです。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3