一、结构体:
首先为什么要使用结构体?比如说你要存储一个学生的信息,包含:姓名(char[])、学号(int)、成绩(double);我们希望可以把这些信息放在一个单元中,数组满足不了这种要求,因为数组中每个元素的类型是一样的。所以我们就需要别外一种数据格式,以就是现在要说的结构体
结构体是由用户自己定义的一种数据格式,结构体的声明就定义了这种类型的数据格式;
如学生结构体的声明;
struct Student
{
char naem[20];
int id;
double grade;
};
定义好结构体以后就可以创建变量了:
Student st;
注:在C中创建结构体时,关键字struct不可以省,要写成 struct Student st;但是在C++可以把struct省掉
成员的访问:
比如要访问name,则是st.name即可以了
结构体的初始化:
Student st =
{
"vnvn",
23,
100.0
}; //和数组一样,他们之间用逗号隔开,可以写在一行,也可以写在多行
也可一个个初始化,st.name = "vnvn";st.id = 23,st.grade = 100.0
C++11中初始化可以省略“=”号Student st{"vnvn",23,100.0};
结构体数组:
前面已经介绍了数组这儿就不详细介绍了
Student st[2] =
{
{"vnvn",23,100.0},//用逗号隔开
{"cncn",24,99.9}
};
二、共用体:
共用体也叫联合体(union)是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型,共用体的声明和结构体类似
共用体声明:
union A
{
int a;
long b;
double d;
};
A a;
a.a = 10;
当其中一个元素的值改变后,所有值都会根着改变,因为他们是共用的同一片内存空间
三、枚举:
enum提供了另外一种创建符号常量的方式,这种方式可以代替const。它还允许定义新的类型但是必须 进行严格限制,使用enum的语句与使用结构相似。
enum week{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}
默认的情况下第一个为0,以后每一个加1,week的值是爱限制的,只有0-6这个值
枚举变量具有一些特殊属性,在不进行强转的情况下,枚举只将定义时使用的枚举量赋给这种变量:
week w = Monday; //可以
w = 5; //不可以这样干
w = 100; //不可这样干
因些week的值是爱到限制的,它就有那个7个值,如果想把别的值赋给week变量,编译器则会报错,还有一个特点就是enum没有运算符的
w++、w=w+1、、、、、、都是不可以的
但是有的人就是疑问因为int n = w + 1;是可以的,那是因为程序在运行的时候把w转换成int类型
设置枚举的值:
枚举的值是可以自己设置的,enum week{Monday = 1,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday},在这里Monday 为1后面的每个都为前面一个加1,也就是说Tuesday为2,Wednesday=3、、、、、、
enum week{Monday ,Tuesday,Wednesday=10,Thursday,Friday,Saturday,Sunday}前面是从0开始,有设置的那个开始后面每个加1,Monday =0,Tuesday=1,Thursday = 11、、、、、
但是注意,给枚举赋值,只能把整数赋值给枚举
}