Skip to content

【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类型的指针变量

Copyright © 2022 田园幻想乡 浙ICP备2021038778号-1