Array 与 C 语言中的 Structures 和 Unions 有何不同?
How Array is different from Structures and Unions in C programming Language?
我无法理解它们之间的区别。当他们三个人做同样的事情时,那么我们应该什么时候去 Array/Structure/Union?
与结构相比,数组的元素之间没有填充。数组和结构的所有元素都被考虑用于总大小计算,而联合大小等于其最大大小的元素。
数组中所有元素的类型相同,这不是结构和联合的前提条件。
数组使用基于索引的访问来访问其元素,而结构和联合使用 .element_name
来访问其元素。
在一个数组中,所有元素都具有相同的大小和类型,因此您不能将一个元素用作 int
,将另一个元素用作 double
值,依此类推。
在 struct
s 中,每个元素都可以有不同的大小或类型。您可以将一个用作 int
,将其他用作可用于常规变量的任何数据类型,您还可以使用结构数组。
union
用于将单个变量用于可能的多种数据类型。在 union
中,实例的大小等于其最大成员的大小,这与 struct
s 中的实例不同,后者等于各个成员大小的总和。
此外,如果您使用 struct
,即使对于相同类型的成员,语法本质上也会更加清晰。例如,而不是
float ****point3d;
你可以
struct point3d_s {
float x, float y, float z;
};
point3d_s *point3d;
将声明一个指向 3 维点的指针,它又可以用作数组。
好吧,它们是三个完全不同的对象。
当您应该有许多(好吧,至少两个...)相同类型的元素时,使用 array。主要是,它们的数量可能会有所不同。
例如:将所有 phone 名学生放在 class.
中
当您应该将几个变量聚合在一起时,请使用 struct。
例如:保留每个学生的姓名、phone 号码和地址。
当您应该始终只使用几种可能的变量类型中的一种时,请使用 union。
例如:每个学生保留 他的 phone 号码 或 他们的电子邮件地址。
我无法理解它们之间的区别。当他们三个人做同样的事情时,那么我们应该什么时候去 Array/Structure/Union?
与结构相比,数组的元素之间没有填充。数组和结构的所有元素都被考虑用于总大小计算,而联合大小等于其最大大小的元素。
数组中所有元素的类型相同,这不是结构和联合的前提条件。
数组使用基于索引的访问来访问其元素,而结构和联合使用 .element_name
来访问其元素。
在一个数组中,所有元素都具有相同的大小和类型,因此您不能将一个元素用作 int
,将另一个元素用作 double
值,依此类推。
在 struct
s 中,每个元素都可以有不同的大小或类型。您可以将一个用作 int
,将其他用作可用于常规变量的任何数据类型,您还可以使用结构数组。
union
用于将单个变量用于可能的多种数据类型。在 union
中,实例的大小等于其最大成员的大小,这与 struct
s 中的实例不同,后者等于各个成员大小的总和。
此外,如果您使用 struct
,即使对于相同类型的成员,语法本质上也会更加清晰。例如,而不是
float ****point3d;
你可以
struct point3d_s {
float x, float y, float z;
};
point3d_s *point3d;
将声明一个指向 3 维点的指针,它又可以用作数组。
好吧,它们是三个完全不同的对象。
当您应该有许多(好吧,至少两个...)相同类型的元素时,使用 array。主要是,它们的数量可能会有所不同。 例如:将所有 phone 名学生放在 class.
中当您应该将几个变量聚合在一起时,请使用 struct。 例如:保留每个学生的姓名、phone 号码和地址。
当您应该始终只使用几种可能的变量类型中的一种时,请使用 union。 例如:每个学生保留 他的 phone 号码 或 他们的电子邮件地址。