【6】结构体&共用体&枚举类型&Typedef
目录
结构体//一组类型组成的类型
c
//声明结构体,struct 可不写
struct emm(结构体名称){
char emm1[50];
int emm2;
……
} ;str1,str2;
//后面可以直接定义变量,若无结构体名(无名结构体),之后不能再定义这种变量
//不能在结构体内直接赋初值
定义结构体型变量:
c
emm a;={“emm”,4}//必须提供初值
成员访问运算符(.)
c
a.emm2=1;
a={.emm1=”eeem”,.emm2=2};//.emm1 和.emm2可省略
eg:
c
emm *p;
p=&a;//传入首地址
p->emm1等价于(*p).emm1等价于a.emm1//.优先级高于*,所以要加括号
cout<<emm//错误,不能直接输出结构体
共用体//多种类型共用空间
定义共用体:
c
union emm{
int r;
char w[20];
………
};
共用体占用的大小为其内最大数据类型的大小
重新赋值后其他类型的数据会变成乱码
c
emm.r=10;
emm.w=”emm”;
- 共用体变量名一般无意义
枚举类型
c
enum 枚举类型名
{
枚举类型1[=枚举常量1],枚举类型2[=枚举常量2],……,枚举类型n[=枚举常量n]
};
eg:
c
enum color{red,yellow,green};//定义枚举类型color
- 可以给(部分)枚举类型指定枚举值//不赋值的话从 0 开始赋值:
c
enum color{red=100,yellow200,green,blue=400};//green=201
color paint=green;//定义枚举变量
paint=100;//错误,不能用整型值赋给枚举变量
Typedef//用另一个标识符代替变量名
c
Typedef int COUNT; //指定用COUNT代表int型
COUNT i,j; //将变量i,j定义为COUNT类型,即int类型
typedef struct //注意在struct之前用了关键字typedef,表示是声明新名
{
int month;
int day;
int year;
}DATE; //注意DATE是新类型名,而不是结构体变量名
DATE birthday;
c
typedef int NUM[100]; //声明NUM为整型数组类型,包含100个元素
NUM n; //定义n为包含100个整型元素的数组
typedef char *STRING; //声明STRING为字符指针类型
STRING p,s[10]; //p为字符指针变量,s为指针数组(有10个元素)
typedef int (*POINTER)( )//声明POINTER为指向函数的指针类型,函数返回整型值
POINTER p1,p2; // p1,p2为POINTER类型的指针变量