C语言基础---特殊的变量类型(结构体、枚举、共用体)

1.结构体

  C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体,在其他一些高级语言中称为“记录”。

struct Student
{
    int num;
    char name[20];
    char sex;
    int age;
    float score;
    char addr[30];
};

  声明一个结构体类型一般形式为:

  struct 结构体名

    {成员列表};

注意:结构体类型的名字是由一个关键字struct 和结构体名组合而成的(例如struct Student),其中Student就是结构体名,但是这个变量的数据类型是struct Student。

结构体变量的引用由两种方式:①用“.”符号,结构体变量.结构体内的成员变量;②用“->”符号,结构体指针变量名->结构体成员变量。

2.共用体

  有时候想用一段内存单元存放不同类型的变量。例如把一个短整型变量,一个字符型变量和一个实型变量放在同一个地址开始的内存单元中。以上三个变量在内存中占得字节数不同,但都是从同一地址开始存放,也就是使用覆盖技术,后一个数据覆盖了前一个数据。这种使几个不同的变量共享同一段内存的结构成为“共用体”类型的结构。

  定义公用特类型变量的方式一般如下:

union 共用体名
{
    成员表列;
}变量表列;

  结构体变量所占得内存长度是各成员占得内存长度之和,而共用体所占得内存长度等于最长的成员长度。

  引用共用体变量的方式:只有先定义了共用体变量才能引用它,但应注意,不能引用共用体变量,而只能引用共用体变量中的成员。

共用体类型数据的特点:

  (1)同一个内存段可以用来存放不同类型的成员,但在每一瞬时只能存放其中一个成员,而不是同时存放几个;

  (2)可以对共用体变量初始化,但初始化表中只能有一个常量;

  (3)共用体变量中起作用的成员是最后一次被赋值的成员;

  (4)共用体变量的地址和他各成员变量的地址都是同一地址。

3.枚举变量

  如果一个变量只有几种可能的值,则可以定义为枚举类型,所谓枚举就是把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。

  声明枚举类型用enum开头。例如:

  enum  weekday{sun,mon,tue,wed,thu,fri,sat};

  以上声明了一个枚举类型enum weekday workday,weekend;  /*后面两个是枚举变量*/

  花括号中的sun,mon,...,sat成为枚举元素或者枚举常量。

说明:(1)c编译对枚举类型的枚举元素按常量处理,故称为枚举常量,不要因为它们是标识符而把它们看作变量,不能对其进行赋值。

   (2)每一个枚举元素都代表一个整数,c语言按照定义时的顺序默认它们的值为0,1,2,3,4,5....在上面的定义中。sum的值为0,mon的值为1,如果有赋值语句:workday = Mon;相当于workday = 1。

原文地址:https://www.cnblogs.com/RanWhoo/p/13274083.html