2016-11-20 12 views
-4

私はそれらの違いを理解できません。私たちがArray/Structure/Unionのために行くべきとき、同じことが3人によって行われたら?配列はCプログラミング言語の構造体および共用体とどう違うのですか?

+0

アレイ - 同じデータ型を持つ多くの要素。構造 - 異なるデータ型を持つ多くの要素。 Union - 一度に1つのElementのみ(最大のデータ型が予約されます)...私の擬似知識が行く限り、 –

+1

彼らはなぜ彼らが異なっているのかを述べる代わりに同じである理由を説明してください。彼らは同じではなく、同じ目的のために使用すべきではありません。リンクされたリストは配列と同じであると言うのと同じです。 –

+0

ユニオンは、データメンバーが同じメモリアドレスを共有する構造体です。 – Fang

答えて

1

配列内のすべての要素は同じサイズと型を持っているため、intdoubleの値のように使用することはできません。

structでは、すべての要素が異なるサイズまたはタイプを持つことができます。 1つをintとして使用し、その他は通常の変数に使用できる任意のデータ型に対して使用できます。また、構造体の配列を持つこともできます。

unionは、おそらく複数のデータ型に対して1つの変数を使用するために使用されます。 unionでは、インスタンスのサイズは、structとは異なり、個々のメンバサイズの合計と等しく、最大のメンバのサイズに等しくなります。

同じタイプのメンバーでもstructを使用すると、基本的に構文が非常に明確になります。例えば、代わり

float ****point3d; 

を有することがあなたが順番にすぎアレイとして使用することができる3次元のポイントにポインタを宣言する

struct point3d_s { 
    float x, float y, float z; 
}; 
point3d_s *point3d; 

を有することができます。

私は配列が役に立たないという意味ではありませんが、私はそれ以上の説明なしに何を意味するのか推測できると思います。

1

配列には、構造体と比較して要素間にパディングがありません。配列と構造体のすべての要素が合計サイズ計算の対象となり、ユニオンサイズは最大サイズの要素と同じになります。

配列にはすべて同じタイプの要素がありますが、これは構造体および共用体の前提条件ではありません。

配列は要素にアクセスするためにインデックスベースのアクセスを使用し、構造体および共用体はその要素にアクセスするために.element_nameを使用します。

2

まあまったく異なる3つのオブジェクトです。

の配列を使用すると、同じタイプの要素が複数(よく、少なくとも2つ...)必要な場合に使用します。主に、それらの数が異なる場合があります。 例:クラス内の生徒の電話番号をすべて保持します。

構造体を使用すると、いくつかの変数を集約する必要があります。 例:保留、生徒ごと、氏名、電話番号、住所。

ユニオンを使用すると、いくつかの可能性のある変数のうち1つだけを常に使用する必要がある場合があります。 例:学生1人につき電話番号またはのいずれかのメールアドレスを保持します。

+0

配列内に同じ型の複数の変数を持つことはできますか?あなたは明確にしていただけますか?あなたは変数が何であるか理解していますか? –

+1

@iharob:このタイプの質問は本当に嫌いです(「learn C!」と簡単に答えられるかもしれませんが) - しかし、この答えは*悪いですね?あなたは私が見ることができない何かを読むように見えます。 – usr2564301

+0

@iharob:そうですね、それは配列とまったく同じです。同じタイプの多くの変数。あなたは「配列でそれらを持っていない」。それらは*配列です。 – Mike

関連する問題