Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語の構造体の結合とは何ですか?


ユニオンは、Cプログラミング言語のさまざまなデータ型のいくつかの変数によって共有されるメモリの場所です。

構文

構造体の結合の構文は次のとおりです-

union uniontag{
   datatype member 1;
   datatype member 2;
   ----
   ----
   datatype member n;
};

次の例は、構造体の結合の使用法を示しています-

union sample{
   int a;
   float b;
   char c;
};

共用体変数の宣言

以下は、ユニオン変数の宣言です。次の3種類があります-

タイプ1

union sample{
   int a;
   float b;
   char c;
}s;

タイプ2

union{
   int a;
   float b;
   char c;
}s;

タイプ3

union sample{
   int a;
   float b;
   char c;
};
union sample s;
  • ユニオンが宣言されると、コンパイラは自動的に最大サイズの変数タイプを作成して、ユニオン内の変数を保持します。

  • いつでも、参照できる変数は1つだけです。

初期化とアクセス

  • ユニオンメンバーにアクセスするには、同じ構造の構文が使用されます。

  • ドット演算子はメンバーにアクセスするためのものです。

  • 矢印演算子(->)は、ポインターを使用してメンバーにアクセスするために使用されます。

サンプルプログラム1

次のプログラムは、構造体の結合の使用法を示しています。

union sample{
   int a;
   float b;
   char c;
}
main ( ){
   union sample s = {10, 20.5, "A"};
   printf("a=%d",s.a);
   printf("b=%f",s.b);
   printf("c=%c",s.c);
}

出力

上記のプログラムを実行すると、次の結果が得られます-

a = garbage value
b = garbage value
c = A

構造の結合

  • 構造体はユニオン内にネストでき、構造体のユニオンと呼ばれます。

  • 構造内にユニオンを作成することができます。

サンプルプログラム2

構造体の結合の使用法を示す別のCプログラムを以下に示します-

struct x{
   int a;
   float b;
};
union z{
   struct x s;
};
main ( ){
   union z u;
   u.s.a = 10;
   u.s.b = 30.5;
   printf("a=%d", u.s.a);
   printf("b=%f", u.s.b);
}

出力

上記のプログラムを実行すると、次の結果が得られます-

a= 10
b = 30.5

  1. C言語のstrcmp()関数とは何ですか?

    Cライブラリ関数intstrcmp(const char * str1、const char * str2) str1が指す文字列を比較します str2が指す文字列へ 。 文字の配列は文字列と呼ばれます。 宣言 以下は配列の宣言です- char stringname [size]; 例-charstring[50];長さ50文字の文字列 初期化 単一文字定数の使用- char string[10] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’ ,&ls

  2. C#の構造とは何ですか?

    C#の構造体は、値型のデータ型です。これは、単一の変数にさまざまなデータ型の関連データを保持させるのに役立ちます。 structキーワードは、構造体の作成に使用されます。 C#構造には次の機能があります- 構造体には、メソッド、フィールド、インデクサー、プロパティ、演算子メソッド、およびイベントを含めることができます。 構造体はコンストラクターを定義できますが、デストラクタはできません。ただし、構造体のデフォルトのコンストラクターを定義することはできません。デフォルトのコンストラクターは自動的に定義され、変更できません。 クラスとは異なり、構造体は他の構造体やクラスを継承で