C ++ユニオンの詳細な分析

C ++ユニオンの概要

C ++では、複数の異なるタイプの変数を同じメモリユニットに格納する必要があります。たとえば、整数変数、文字変数、および倍精度変数を同じアドレスから始まるメモリユニットに配置します。これらの3つの変数は、メモリ内で異なるバイト数を占有しますが、すべて同じアドレスから格納されます。複数の異なる変数が同じメモリセグメントを占有できるようにするこの構造は、ユニオンタイプ構造と呼ばれます。

ユニオンタイプを宣言する一般的な形式は次のとおりです。

union 共用体类型名 {成员表列 };

和集合変数を定義する一般的な形式は次のとおりです。

共用体类型名 共用体变量名;

C ++では、ユニオンタイプを宣言しながらユニオン変数を定義することも、ユニオンタイプ名なしでユニオン変数を直接定義することもできます。

//有共用体类型名
union data
{
    
    
  int temp;
  char charcter;
  double str;
}union_1,union_2;

//无共用体类型名
union 
{
    
    
  int temp;
  char charcter;
  double str;
}union_1,union_2;

C ++構造変数が占めるメモリ長は、各メンバーが占めるメモリ長の合計です。各メンバーは、独自のメモリユニットを占有します。ユニオン変数が占めるメモリ長は、最長のメンバーの長さと同じです。

C ++ユニオン変数へのアクセス

C ++はユニオン変数を参照できませんが、ユニオン変数のメンバーのみを参照できます。

union_1.temp;//引用共用体变量中的整型成员temp
union_1.character;//引用共用体变量中的字符型成员character
union_1.str;//引用共用体变量中的双精度成员str

ユニオン変数を使用するC ++の目的は、同じメモリセグメントに複数の異なるタイプのデータを格納することであり、同時に複数ではなく、各瞬間に1つだけを格納できます。

C ++ユニオンタイプの特徴

ユニオン変数のアドレスとそのメンバーのアドレスは同じアドレスです。
ユニオン変数名に値を割り当てることはできません。
変数名を引用して値を取得することはできません。
ユニオン変数を定義するときに初期化することはできません。
ユニオン変数名を関数パラメーターとして使用することはできません。

C ++がアクセスできるのは、ユニオン変数の最後に割り当てられたメンバーです。新しいメンバーを割り当てた後、元のメンバーはその効果を失います。
C ++ユニオン
より多くのケースがパブリックアカウントに行くことができます:熟練したC言語エントリ

おすすめ

転載: blog.csdn.net/weixin_48669767/article/details/112252505