C/C における共用体のサイズを理解する
共用体は、共有する変数のグループで構成される多用途のデータ構造です。同じ記憶場所。共用体のサイズは、C/C プログラマの間でよく議論されます。
共用体のサイズは、その中の最大のデータ型のサイズと一致しますか?
はい、共用体のサイズはその最大のメンバーのサイズと同じです。これは、共用体のすべてのメンバーが同じメモリ位置に存在し、コンパイラが他のメンバーに十分なスペースを確保するために最大のメンバーにスペースを割り当てるためです。
方法コンパイラはスタック ポインタの移動を計算しますか?
共用体の要素にアクセスすると、コンパイラはその要素の先頭からのオフセットを計算します。ユニオンのメモリの場所。スタック ポインタはそれに応じて移動します。ただし、ユニオン内の小さいデータ型がアクティブな場合でも、スタック ポインタは最大のデータ型のサイズに基づいて調整されます。
例:
次の共用体:
union { short x; int y; long long z; };
この場合、共用体のサイズは Long Long (8) のサイズと等しくなります。バイト)。 「x」がアクティブ (short (2 バイト)) の場合、それにアクセスすると、スタック ポインタが共用体のメモリ位置から 8 バイト (long long のサイズ) 移動します。
以上がC/C Union の規模とその理由は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。