C++结构体、共用体、枚举

一、结构体:

首先为什么要使用结构体?比如说你要存储一个学生的信息,包含:姓名(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、、、、、

但是注意,给枚举赋值,只能把整数赋值给枚举




}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值