Array 与 C 语言中的 Structures 和 Unions 有何不同?

How Array is different from Structures and Unions in C programming Language?

我无法理解它们之间的区别。当他们三个人做同样的事情时,那么我们应该什么时候去 Array/Structure/Union?

与结构相比,数组的元素之间没有填充。数组和结构的所有元素都被考虑用于总大小计算,而联合大小等于其最大大小的元素。

数组中所有元素的类型相同,这不是结构和联合的前提条件。

数组使用基于索引的访问来访问其元素,而结构和联合使用 .element_name 来访问其元素。

在一个数组中,所有元素都具有相同的大小和类型,因此您不能将一个元素用作 int,将另一个元素用作 double 值,依此类推。

structs 中,每个元素都可以有不同的大小或类型。您可以将一个用作 int,将其他用作可用于常规变量的任何数据类型,您还可以使用结构数组。

union 用于将单个变量用于可能的多种数据类型。在 union 中,实例的大小等于其最大成员的大小,这与 structs 中的实例不同,后者等于各个成员大小的总和。

此外,如果您使用 struct,即使对于相同类型的成员,语法本质上也会更加清晰。例如,而不是

float ****point3d;

你可以

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

将声明一个指向 3 维点的指针,它又可以用作数组。

好吧,它们是三个完全不同的对象。

当您应该有许多(好吧,至少两个...)相同类型的元素时,使用 array。主要是,它们的数量可能会有所不同。 例如:将所有 phone 名学生放在 class.

当您应该将几个变量聚合在一起时,请使用 struct。 例如:保留每个学生的姓名、phone 号码和地址。

当您应该始终只使用几种可能的变量类型中的一种时,请使用 union。 例如:每个学生保留 他的 phone 号码 他们的电子邮件地址。