认识C++结构体

简介: 认识C++结构体

0.前言:


 前面我们已经讲过了C++字符串、string类等和数组有关的知识,数组是一种复合类型,本节讲的结构也是复合类型,复合类型是由基本类型组成的。


 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里的结构体基础知识一样。哈哈,看完几乎都是知识点的博客是不是有点烦琐呢?但能有收获吧!


 还是一样,如果文章内容有错,排版或有可以改进的地方,请留言在评论区告诉博主,第一时间回应并做出调整。


 那么博主在这里求个点赞!!^ ^。


下一篇:共用体、枚举、和指针。

相关文章
|
4月前
|
数据处理 C# C++
如何使用C#和C++结构体实现Socket通信
如何使用C#和C++结构体实现Socket通信
156 0
|
4月前
|
C++
C++系列十四:结构体
C++系列十四:结构体
|
4月前
|
C++
.C++中结构体数组docx
.C++中结构体数组docx
26 0
|
10月前
|
编译器 C语言 C++
C/C++内存对齐规则(结构体、联合体、类)
C/C++内存对齐规则(结构体、联合体、类)
|
29天前
|
C++ 容器
C++中自定义结构体或类作为关联容器的键
C++中自定义结构体或类作为关联容器的键
30 0
|
22天前
|
C++
c++学习笔记07 结构体
C++结构体的详细学习笔记07,涵盖了结构体的定义、使用、数组、指针、嵌套、与函数的交互以及在结构体中使用const的示例和解释。
31 0
|
3月前
|
存储 数据管理 程序员
C++一分钟之-结构体与联合体(Union)
【6月更文挑战第20天】在C++中,结构体(struct)用于组合多种数据类型形成复合类型,成员变量占用独立内存,适合存储不同类型且同时有效的数据。联合体(union)则让所有成员共享同一内存,适合节省空间和进行低级别类型转换,但需小心数据覆盖。通过`struct`和`union`,程序员能构建更灵活的代码,但也需留意内存对齐和数据管理等问题。
46 2
|
2月前
|
存储 程序员 编译器
|
3月前
|
存储 算法 C++
C++结构体
C++结构体
|
4月前
|
C++
C++程序中的结构体类型
C++程序中的结构体类型
46 1