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

Cプログラムにおける構造体と共用体の違い


Cには、同じタイプのデータと複数のタイプのデータの両方のコンテナがあります。同じタイプのデータを格納する場合、Cは同じタイプのデータ変数を格納する配列の概念を提供し、異なるタイプのデータを格納する場合は、異なるタイプのデータ変数も格納できる構造と共用体の概念を提供します。

StructureとUnionはどちらも異なるタイプのデータを保持できるため、内部実装に基づいて、これらのコンテナの両方にいくつかの違いを見つけることができます。

以下は、StructureとUnionの重要な違いです。

構造 ユニオン
Sr。いいえ。 キー
1 定義 Structureは、さまざまなタイプのデータ変数を格納するためにCで定義されたコンテナーであり、ユーザー定義変数の格納もサポートします。 一方、UnionもCの同様の種類のコンテナであり、ユーザー定義の変数とともにさまざまなタイプの変数を保持することもできます。
2 内部実装 Cの構造体は、各入力メンバーに個別のメモリ位置が割り当てられるため、内部的に実装されます ユニオンメモリが他のすべての入力変数の中で最大のサイズを持つ1つのメンバーにのみ割り当てられ、同じ場所がこれらすべての間で共有されている場合。
3 構文 Cで構造体を宣言する構文は次のとおりです:
struct struct_name{
   type element1;
   type element2;
   .
   .
} variable1, variable2, ...;
CでUnionを宣言する他の構文は、次のとおりです。
union u_name{
   type element1;
   type element2;
   .
   .
} variable1, variable2, ...;
4 サイズ 定義で述べたように、Structureにはメンバーの共有ロケーションがないため、Structureのサイズはすべてのデータメンバーのサイズの合計以上です。 一方、Unionにはメンバーごとに個別の場所がないため、そのサイズはすべてのデータメンバーの中で最大のメンバーのサイズと同じです。
5 バリューストレージ 前述のように、Structureの場合、入力データメンバーごとに特定のメモリ位置があるため、異なるメンバーの複数の値を格納できます。 Unionの場合、すべての入力データメンバーに対して共有メモリ割り当てが1つしかないため、すべてのメンバーに対して一度に1つの値が格納されます。
6 初期化 Structureでは、複数のメンバーを同時に初期化できます。 一方、Unionの場合、一度に初期化できるのは最初のメンバーだけです。

  1. C#でのクラスと構造の違い

    クラスと構造を区別するには、最初に、データの保持と定義のコンテキストでは、構造とクラスの両方が同等であるように見えることを理解する必要があります。これらは両方とも、データメンバーにいくつかのデフォルト値を定義および保持することができます。しかし、この文脈を超えてそれらを考慮すると、クラスは構造と比較して機能性とともにより多くの柔軟性を提供します。 クラスと構造の重要な違いは次のとおりです。 Sr。いいえ。 キー クラス 構造 1 データ型 クラスで定義されたデータは参照としてメモリに保存され、アクセスするための特定のアドレスを持っているため、クラスは参照型であると言えます。

  2. C#でのHashTableとDictionaryの違い

    HashTableとDictionaryはどちらも、データを格納するために使用されるデータ構造のタイプです。これらのデータ構造は両方とも、保存されたデータをキーと値のペアで保持します。 これらの主要な機能の違いに基づいて、HashTableとDictionaryを次のように区別できます- Sr。いいえ。 キー HashTable 辞書 1 定義 HashTableは、キーと値のペアでデータを格納するために使用される非汎用タイプのコレクションであり、 System.Collectionsで定義されます。 名前空間。 一方、Dictionaryは、 System.Colle