工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

ストラクチャーとユニオンの違い

構造とは?

構造体は、異なるデータ型の論理的に関連するデータ項目を結合する C プログラミング言語のユーザー定義データ型です。

すべての構造要素は、連続したメモリ位置に格納されます。構造型変数は、さまざまなデータ型の複数のデータ項目を 1 つの名前で格納できます。

このチュートリアルでは、次のことを学びます:

連合とは

Union は、構造体と同様に、ユーザー定義のデータ型です。 Union は、異なるタイプとサイズのオブジェクトを結合します。ユニオン変数は、ユニオンの最大の変数を保持するためのスペースに等しいメモリ スペースを割り当てます。さまざまな種類のオブジェクトが同じ場所を共有できます。

構造宣言の構文

struct [name of the structure]
   {
       type member1;
       type member2;
       type member3;
   };

構造体は、「struct」キーワードと構造体の名前を使用して宣言されます。数値 1、数値 2、数値 3 は、構造体の個々のメンバーです。本文部分はセミコロン (;) で終了します。

C プログラミングにおける構造の例

#include <stdio.h>
struct student {
    char name[60];
    int roll_no;
    float marks;
} sdt;
int main() {
    printf("Enter the following information:\n");
    printf("Enter student name: ");
    fgets(sdt.name, sizeof(sdt.name), stdin);
    printf("Enter student roll number: ");
    scanf("%d", & sdt. roll_no);
    printf("Enter students marks: ");
    scanf("%f", & sdt.marks);
    printf("The information you have entered is: \n");
    printf("Student name: ");
    printf("%s", sdt.name);
    printf("Student roll number: %d\n", sdt. roll_no);
    printf("Student marks: %.1f\n", sdt.marks);
    return 0;
}

上記のプログラムでは、student という構造体が作成されます。この構造体には、1) name (文字列)、2) roll_no (整数)、3) マーク (float) の 3 つのデータ メンバーがあります。

この後、構造体変数 sdt が作成され、生徒の情報が格納され、コンピューターの画面に表示されます。

出力:

次の情報を入力してください:

生徒の名前を入力してください:James

学生名簿番号を入力してください:21

学生の点数を入力してください:67

入力した情報は次のとおりです:

学生名:ジョン

生徒数:21

学生の点数:67.0

共用体宣言の構文

union [name of union]
    {
       type member1;
       type member2;
       type member3;
    };

ユニオンは、「ユニオン」キーワードとユニオンの名前を使用して宣言されます。ナンバー 1、ナンバー 2、ナンバー 3 は組合の個々のメンバーです。本文部分はセミコロン (;) で終了します。

C プログラミングにおける共用体の例

#include <stdio.h>

union item
{
    int x;
    float y;
    char ch;
};

int main( )
{
    union item it;
    it.x = 12;
    it.y = 20.2;
    it.ch = 'a';
    
    printf("%d\n", it.x);
    printf("%f\n", it.y);
    printf("%c\n", it.ch);
    
    return 0;
}

出力:

1101109601

20.199892

上記のプログラムでは、x と y の値が壊れていることがわかります。変数 ch のみが期待される結果を出力します。これは、union では、メモリの場所がすべてのメンバー データ型で共有されるためです。

したがって、現在値が格納されている唯一のデータ メンバーがメモリ空間を占有します。変数 ch の値が最後に格納されたため、残りの変数の値は失われます。

構造対。ユニオン

構造体と共用体の重要な違いは次のとおりです:

構造 ユニオン struct キーワードを使用して構造体を定義できます。union キーワードを使用して共用体を定義できます。構造体内のすべてのメンバーに一意のメモリ位置が割り当てられます。共用体では、メモリ位置はすべてのデータ メンバーによって共有されます。値の変更1 つのデータ メンバーの値を変更しても、構造内の他のデータ メンバーには影響しません。1 つのデータ メンバーの値を変更すると、ユニオン内の他のデータ メンバーの値が変更されます。一度に複数のメンバーを初期化できます。最初のメンバーのみを初期化できます。構造体の合計サイズは、すべてのデータ メンバーのサイズの合計です。ユニオンの合計サイズは、最大のデータ メンバーのサイズです。主に、さまざまなデータ型を格納するために使用されます。使用可能な多くのデータ型の 1 つを格納します。内部パラメーターに書き込まれたすべてのメンバーのスペースを占有します。内部パラメーターに最大サイズが書き込まれたメンバーのスペースを占有します。一度に任意のメンバーを取得できます。次のことができます。 1 つのメンバーにアクセスする柔軟な配列をサポートしています。柔軟な配列はサポートしていません。

構造の利点

構造を使用することの長所/利点は次のとおりです:

組合の利点

ユニオンを使用することの長所/利点は次のとおりです:

構造の短所

構造体を使用する場合の短所/欠点は次のとおりです:

ユニオンのデメリット

ユニオンを使用する場合の短所/欠点は次のとおりです:

主な違い:


C言語

  1. アスベストとグラスファイバーの違い
  2. 構造体とクラスの違い:C++ の例で説明
  3. C#対。 C++:C# と C++ の違いは何ですか?
  4. CとC++の違い
  5. CとJavaの違い
  6. C の文字列に対する strlen() と sizeof() の違い
  7. Python vs JavaScript:JavaScript と Python の違い
  8. Python 対 Ruby:Ruby と Python の違い
  9. DCモーターとACモーターの違い
  10. ろう付けとはんだ付けの違い
  11. 2ストロークエンジンと4ストロークエンジンの違い