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つの変数のみを参照できます。

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

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

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

ユニオンへのポインタがあり、構造体と同じように矢印演算子(->)を使用してメンバーにアクセスできます。

次のプログラムは、Cプログラミングでの共用体へのポインタの使用法を示しています-

#include <stdio.h>
union pointer {
   int num;
   char a;
};
int main(){
   union pointer p1;
   p1.num = 75;
   // p2 is a pointer to union p1
   union pointer* p2 = &p1;
   // Accessing union members using pointer
   printf("%d %c", p2->num, p2->a);
   return 0;
}

出力

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

75 K

例2

入力が異なる同じ例を考えてみましょう。

#include <stdio.h>
union pointer {
   int num;
   char a;
};
int main(){
   union pointer p1;
   p1.num = 90;
   // p2 is a pointer to union p1
   union pointer* p2 = &p1;
   // Accessing union members using pointer
   printf("%d %c", p2->num, p2->a);
   return 0;
}

出力

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

90 Z

  1. ユニオンにC言語でのポインタを説明する

    ユニオンはメモリロケーションと呼ばれ、さまざまなデータ型のいくつかの変数によって共有されます。 構文 構文は次のとおりです- union uniontag{    datatype member 1;    datatype member 2;    ----    ----    datatype member n; }; たとえば、 union sample{    int a;    float b;    char c; }

  2. C言語でのポインタアクセスの概念を説明する

    ポインタは、他の変数のアドレスを格納する変数です。 ポインタの宣言、初期化、アクセス 次のステートメントを検討してください- int qty = 179; ポインタの宣言 int *p; 「p」は、別の整数変数のアドレスを保持するポインタ変数です。 ポインタの初期化 アドレス演算子(&)は、ポインタ変数を初期化するために使用されます。 int qty = 175; int *p; p= &qty; 文字列の配列内の要素にアクセスする際にポインタがどのように役立つかの例を考えてみましょう。 このプログラムでは、特定の場所に存在する要素にアクセスしようとしています。操