首页 > 代码库 > 共用体,枚举体和typedef

共用体,枚举体和typedef

共用体变量定义
union  共用体名
{
     成员表列
}变量表列;
特点:1.同一个内存段可以用来存放几种不同类型的成员 ,但在每一瞬间只能存放其中一种,而不是同时存放几种。共用体变量中起作用的是最后一次存放的成员。共用体变量的地址和它各个成员的地址都是同一地址。
            2.不能对共用体变量名赋值,不能引用变量名来得到一个值,不能在定义共用体变量时对它初始化。
            3.不能把共用体变量作为函数参数,也不能是函数带回共用体变量,但可以使用共用体变量的指针。(与结构体变量这种用法相仿)。
            4.共用体类型可以出现在结构体类型定义中,也可以定义共用体数组。反之,结构体也可以出现在共用体中,数组也可以作为共用体的成员。
 
枚举体
声明枚举体:enum  weekday{sun,mon,tue,wed,thu,fri,sat};
声明了一个枚举类型enum  weekday,可以用此类型来定义变量:enum  weekday  workday,week-end;
workday,week-end  的值只能是列表中的一个(sun-sat)。
说明:1.C编译中,对枚举元素按常理处理,故称枚举常量,不能对它们赋值。
           2.枚举元素作为常量,它们是有值的,默认为0,1,2,3....。枚举元素的值也可在定义时由程序员制定。
           3.枚举值可以用来作判断比较。如:if(workday==mon).....    if(workday>sun)....。一个整数不能直接赋给一个枚举变量。
                           workday=(enum weekday)2;
 
用tyedef命名已有类型:
typedef struct{int mongth}DATA;          DATA  birthday;
typedef struct student STUD;
tyoedef int  NUM[100];//声明NUM为整形数组类型
说明:1.习惯上常把用typedef声明的类型名用大写字母表示。
          2.typedef与#define:#define是在预编译是处理的,它只能做字符替换,而typedef是在编译时处理的,不是做简单的替换。
         3.当不同 源文件中用到同一类型数据(尤其像数组,结构体,共用体,等)时,常用typedef声明一些数据类型,把他们单独放在一个文件中,然后在需要用到它们的文件中把他们包含进来。
         4.使用typedef有利于程序的通用与移植。

共用体,枚举体和typedef