私はそれらの違いを理解できません。私たちがArray/Structure/Unionのために行くべきとき、同じことが3人によって行われたら?配列はCプログラミング言語の構造体および共用体とどう違うのですか?
答えて
配列内のすべての要素は同じサイズと型を持っているため、int
とdouble
の値のように使用することはできません。
struct
では、すべての要素が異なるサイズまたはタイプを持つことができます。 1つをint
として使用し、その他は通常の変数に使用できる任意のデータ型に対して使用できます。また、構造体の配列を持つこともできます。
union
は、おそらく複数のデータ型に対して1つの変数を使用するために使用されます。 union
では、インスタンスのサイズは、struct
とは異なり、個々のメンバサイズの合計と等しく、最大のメンバのサイズに等しくなります。
同じタイプのメンバーでもstruct
を使用すると、基本的に構文が非常に明確になります。例えば、代わり
float ****point3d;
を有することがあなたが順番にすぎアレイとして使用することができる3次元のポイントにポインタを宣言する
struct point3d_s {
float x, float y, float z;
};
point3d_s *point3d;
を有することができます。
私は配列が役に立たないという意味ではありませんが、私はそれ以上の説明なしに何を意味するのか推測できると思います。
配列には、構造体と比較して要素間にパディングがありません。配列と構造体のすべての要素が合計サイズ計算の対象となり、ユニオンサイズは最大サイズの要素と同じになります。
配列にはすべて同じタイプの要素がありますが、これは構造体および共用体の前提条件ではありません。
配列は要素にアクセスするためにインデックスベースのアクセスを使用し、構造体および共用体はその要素にアクセスするために.element_name
を使用します。
まあまったく異なる3つのオブジェクトです。
の配列を使用すると、同じタイプの要素が複数(よく、少なくとも2つ...)必要な場合に使用します。主に、それらの数が異なる場合があります。 例:クラス内の生徒の電話番号をすべて保持します。
構造体を使用すると、いくつかの変数を集約する必要があります。 例:保留、生徒ごと、氏名、電話番号、住所。
ユニオンを使用すると、いくつかの可能性のある変数のうち1つだけを常に使用する必要がある場合があります。 例:学生1人につき電話番号またはのいずれかのメールアドレスを保持します。
配列内に同じ型の複数の変数を持つことはできますか?あなたは明確にしていただけますか?あなたは変数が何であるか理解していますか? –
@iharob:このタイプの質問は本当に嫌いです(「learn C!」と簡単に答えられるかもしれませんが) - しかし、この答えは*悪いですね?あなたは私が見ることができない何かを読むように見えます。 – usr2564301
@iharob:そうですね、それは配列とまったく同じです。同じタイプの多くの変数。あなたは「配列でそれらを持っていない」。それらは*配列です。 – Mike
- 1. C言語:構造体と配列
- 2. 構造体と配列をC言語で使用する
- 3. Go言語の構造体の配列
- 4. 構造体内の配列要素にアクセスする(構造体の配列の一部です)(C言語)
- 5. C言語で構造体の配列を処理するマルチスレッド
- 6. Cの構造体宣言の配列
- 7. C言語で異なる構造体のポインタの配列
- 8. コードが機能しません(C++の共用体および構造体)
- 9. C言語の配列に構造体を追加する
- 10. "C言語で共有メモリの構造体メンバにアクセスする"
- 11. 構造体と共用体
- 12. C構造体と配列
- 13. C構造体、ポインタおよびフィールド
- 14. C言語で15bit構造体
- 15. C/C++ qsort構造体内の構造体の配列
- 16. 構造体の配列 - 構造体?
- 17. CおよびC++で匿名の構造体および共用体を許可する標準はどれですか?
- 18. Cでの構造体と多次元配列のグローバル宣言
- 19. C言語のtypedef構造体の意味は何ですか?
- 20. Cの関数のtypedef構造体と構造体の相違
- 21. Cでどのように構造体の配列を作成しますか?
- 22. ポインタ、配列、および構造体(およびメモリの割り当て)?
- 23. 構造体の配列とmalloc [C]
- 24. Cの構造体の動的配列の構造体の動的配列
- 25. (C/C++)構造体を含む共用体を含む構造体...?
- 26. Cでの構造体配列インデックス
- 27. 私はいくつかの複雑な構造体とCのDLLを持っているCおよびC#(DLLおよびPの呼び出し)の間に構造体の配列を含む構造体
- 28. バイト配列のC++構造体をc#
- 29. Cプログラミング - 構造体2D配列を初期化する
- 30. C言語の構造体にexternを使用する
アレイ - 同じデータ型を持つ多くの要素。構造 - 異なるデータ型を持つ多くの要素。 Union - 一度に1つのElementのみ(最大のデータ型が予約されます)...私の擬似知識が行く限り、 –
彼らはなぜ彼らが異なっているのかを述べる代わりに同じである理由を説明してください。彼らは同じではなく、同じ目的のために使用すべきではありません。リンクされたリストは配列と同じであると言うのと同じです。 –
ユニオンは、データメンバーが同じメモリアドレスを共有する構造体です。 – Fang