0.前言:
前面我们已经讲过了C++字符串、string类等和数组有关的知识,数组是一种复合类型,本节讲的结构也是复合类型,复合类型是由基本类型组成的。
1.结构体简介
结构体是用来表示复杂对象的一个利器,当我们想要描述一个学生的基本信息的时候,需要学生的名字、性别、年龄、学号等基本信息,凭基本数据类型是描述不出来的,比如:使用int来表示学生年龄,但其它三个该怎么表示。数组是相同类型元素的集合,在这里既有字符型,也有整型,所以数组也表示很无奈,这时,救星出现了。
在C++中的结构可以满足要求。同一个结构可以存储多种类型的数据,这使得学生信息可以放在一个结构中,用结构类型创建的一个个变量来描述现实中一个个学生的基本信息。
在这里struct是结构体关键字,inflatable是标记成为新类型的名称,这句话怎么理解呢,就是我们自定义创造了一个结构体类型,用inflatable就可以去创建结构体变量。
C++中与C不同的就是,在创建结构体变量的时候,C语言要带上struct,以这个为例用C语言创建A这个变量,C-- struct inflatable A;。C++强调的是结构声明定义了一种新类型,所以是可以省略struct的。
在{}的最后需要加上;来表示是一条完整的语句,声明语句也是语句,不要忘记加了。
第一步 | 结构声明 struct |
第二步 | 创建结构体变量 {} |
第三部 | 访问结构体 |
2.结构体声明位置
外部变量,其实用C语言来讲就是全局变量的意思,我们尽量使用局部变量,在C++中认为const修饰的变量是符号常量,这点是和C不同的,C中用const修饰变量,变量具有了常属性,但本质是变量。
3.结构体的初始化
在C++11中,{}列表初始化我们已经见过了单值变量,数组,现在还有个结构体。数组和结构体是本来就可以的。
C++11中{}的初始化
例子: |
知识点 |
int a{2} |
"="可以省略 |
int a{} |
{}编译器会初始化 |
整型变量一般就是初始化为0呀,字符就是'\0','\0'的ASCII码值是0,浮点型为0.0。
4.结构将string类作为成员
可以把string类当做结构成员,和字符数组不同的是,类的操作更多。
5.结构变量赋值
前面都是偏理论的,终于有个可以看运行窗口的了(cry)。
一开始choice初始化都是0,如果没有choice=bouquet;这一步,那打印出来都是0啦。
6.创建结构变量的方式
关于没有名称的结构体我需要再说一下的是,我们无法使用名称,实际上是没有名称来创建变量,就像我想创建一个字符变量,char没有了,可能也许还有其它方法创建,但用char这种方法是没用有的,所以要是使用这种结构体,一定要在声明的结尾创建变量。
结构数组,需要知道的是guests.是没有意义的,guests是数组,要先用下标找到结构体变量,再用.对结构体 guests[0].name;
7.结构体中的位字段
看到这里,我觉得写这篇好多都是很熟悉的感觉,因为基本上都和C里的结构体基础知识一样。哈哈,看完几乎都是知识点的博客是不是有点烦琐呢?但能有收获吧!
还是一样,如果文章内容有错,排版或有可以改进的地方,请留言在评论区告诉博主,第一时间回应并做出调整。
那么博主在这里求个点赞!!^ ^。
下一篇:共用体、枚举、和指针。