C中的数组和枚举有什么区别?

时间:2015-08-04 06:08:39

标签: c arrays enums

我发现枚举类似于一个数组,其中的元素从0开始编号。那么数组和枚举之间的区别是什么?

5 个答案:

答案 0 :(得分:3)

Enum基本上是一组命名常量。 它是编号标志参数的替代方案。 (它也不必从零开始编号,您可以指定编号。)

例如,Enum可能是一周中的几天。 Enum可以是公司的部门:例如SALES,BILLING,HR ......

数组是一系列内存位置。这是一个集合。该集合中的每个元素都由一个数字索引。因此,使用该数字,您可以检索存储在该位置的值。就像书中的页码可以让您查找该页面的内容一样,数组上的索引可以让您查找存储在该位置的值。

例如,如果贵公司的每个部门都有编号的物理邮箱(从零开始): 并且您正在创建一些非常简单的软件,以便用户登录以检查他们未收集的字母数, 您可以选择将它们存储在Ints数组中。索引是邮箱号码,值是框中的字母数。

然后,为了便于编程,您可以选择将部门定义为枚举(如前所述),以便您可以索引部门名称。但那会更加先进。

您可能会将Enum与Enumerable混淆,后者是一些用于某些语言的术语,用于描述可以按顺序迭代的任何集合类型(例如,C#中的IEnumerable)。这个术语在C中并不经常使用。它与Enum完全不同。

答案 1 :(得分:3)

数组是一个变量,可以包含索引从0开始的多个元素,而 enum 是一个用户定义的数据类型,包含一个整数常量为的成员列表在枚举的情况下,从0开始分配从0开始的数字不是索引,而在数组的情况下,它们是索引。同样在枚举的情况下,您可以将自己的常量值分配给成员,这些成员可能从0开始也可能不从0开始,可能也可能不在序列中。

答案 2 :(得分:0)

主要区别在于数组是值,枚举是类型。我们可以说一个主要的区别是数组是其他值的集合(即它包含其他值,您可以迭代它们或通过索引访问各个值),而枚举值只是一个原子值。它不包含任何其他值。

答案 3 :(得分:0)

两者完全不同。数组是一个值,枚举是一种类型。 array是不同值的集合,而枚举值只是一个值。 数组用于使用索引在各种值之间进行迭代,而枚举被赋予一些原子值并进行迭代,以便我们可以轻松地迭代该类型。

答案 4 :(得分:0)

使用=运算符'分配数组的值。 int a [4] = {1,2,3,4}'和枚举是用户定义的数据类型,它被指定为  enum days {sun,mon,tue,wed,thr,fri,sat}