【C】枚举,以及枚举和结构体的不同

枚举实际意义跟汉语意义没有多少相似的地方,而且容易让人想起穷举。

学完枚举基本就把几个基本的数据类型学完了哈

穷举……呸,枚举和结构体的结构类似

struct stuent
        {
        int age;
        float height;
        };
enum{
     FIR,
     SCD, 
     THD
};

但不同很多,如下

1,定义结构体是定义一个数据类型,之后,声明的是结构体变量,结构体变量本身只能被赋值于另一个结构体变量,而且两个结构变量必须是同一种结构,但结构变量之内的变量是可以被赋值的。而且结构体变量声明所用的标示符并不会占用变量的标示符的空间,但会和共用体,枚举,结构体占用一个空间。

struct student amy;
int amy =3;
printf("amy' age is %d\n,amy is %d\n ",amy.age, amy);

这是可行的

枚举也是定义一个数据类型,但声明的枚举变量就和结构变量没有多少相似点了。枚举变量是整形变量,也可以被赋值,(这和百度上的不同)

枚举变量声明所用的标示符会占用变量的标示符的空间。可能是储存类不同的话会覆盖,储存类相同会冲突吧(通常这时,code block会给我一个error)。

 

2,枚举的成员只能是整形变量,所以不用声明成员的数据类型,但结构体需要声明,因为结构体的成员可以是变量,数组,指针,结构体,枚举变量,共用体也可以。

 

3,枚举,结构体都是定义数据类型,但结构体定义后并不会起实际作用,只有在声明结构体变量后才有作用。

枚举定义后其成员所用的标示符会占用变量的标示符的空间。而且就算没有定义枚举变量,也可以把其成员拿出当来常量使用。

4,结构体在C语言中所起到的作用也并不在结构体变量上,而是结构体变量的内部成员,结构变量几乎没有任何作用。

枚举中主要是枚举常量,但变量也依然可以当一个普通的变量使用。

 

你可能感兴趣的:(【C】枚举,以及枚举和结构体的不同)