结构体
结构体是用于把一组不同类型的数据组合在一起的复合类型,其中每个数据都是构体中的成员,既组成部分,可以分开使用,也可以整体输出,
定义:
struct 结构体的类型名{成员声明;};
如:
struct x {int a;char b;};
一段使用的例子:
struct x{char c;
int i;
float f;
double d;}
x s1,s2; //x既我们定义的类型名
x* ps=&s1;
s1.c='a';
s1.i=1;
s1.f=3.5;
s1.d=0.7;
s1.c=ps->c; //指针指向成员c,可以如此调用成员。
结构体中的存储是所以成员的大小总和,但只要添加一个成员,它会增加四个字节,按照整型数的字节数存储,比如一个字符一个整型数,其占空间是8个字节。
联合
用于使用一个变量处理不同的数据类型,由关键字union来定义,union的每个成员都从联合变量的首地址开始存储,所以每次只能使用一个成员。
定义:
union 定义名
{数据类型 ;}
如:
union packed{
char c;
int i;
float f;
double d;
};
packed x;
x.c='a'; //其他成员知识不可使用
x.d=3.14; //替换了c的内容
枚举
枚举类型定义了一组命名的整数常量,来提高代码延续性,头文件要用enum
如:
enum trafficlight(red, green ,yellow);
如果不赋值,那么其分别是0,1,2
而加入red=5,其后面没赋值,则剩下分别为6,7
我们可以定义:
trafficlight stop=red;
这些是不限定作用域的枚举类型,还有限制作用域的类型,定义为如:
enum clsss或enum struct
具体定义为
enum clsss trafficlight {red,green,yellow}
使用要限定使用域,比如这个例子:
trafficlight abc=trafficlight::red; //一定要有这个trafficlight::限定作用域