八、结构体讲解与C++的引用
00 分钟
2023-8-16
2023-8-18
type
status
date
slug
summary
tags
category
icon
password

1、结构体

 
结构体(Struct)是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个逻辑上相关的数据单元。结构体可以包含多个成员(member),每个成员可以是不同的数据类型,例如整数、浮点数、字符、数组等。
结构体有点类似于 Python 中的字典或者可以理解为 Java 中的 Bean 类,结构体的定义使用关键字struct,后面跟着结构体的名称和一对大括号。在大括号内部,定义结构体的各个成员,每个成员有一个类型和一个名称,用来标识该成员在结构体中的身份。结构体的定义通常放在函数外部,作为全局定义或者放在函数内部作为局部定义。例如:

1.1、普通使用

在上面的示例中,定义了一个名为Person的结构体,它包含了三个成员:name、age和height。name是一个字符数组,用于存储人的姓名,长度为50;age是一个整数,用于存储人的年龄;height是一个浮点数,用于存储人的身高。我们可以通过struct关键字来使用他,例如:

1.2、结构体数组

在Java或者python中,类似的封装都是可以把他们作为数组或者集合使用的,C语言也不例外,我们可以在C语言中声明结构体数组,例如:
他的使用方式和普通的数组一样,可以通过下下标的方式读取到值,例如:
同样可以使用循环来使用它,这里不做演示。
需要注意的是,用来连接变量名和其中属性的符号 . ,被称之为成员访问运算符

1.3、结构体指针

同普通变量一样,结构体也可以声明指针,例如:
在通常情况下,我们使用指针间接访问是这样的:*p ,所以获取其中元素应该是这样的:
但是这种写法不美观且麻烦,所以有一个人更美观的写法:

1.4、结构体对齐

结构体的大小是最大成员的整数倍。
例如:
其中最大的成员是int或float,占32位,也就是4字节。由于char占一个字节,20个char20个字节,与4成整数倍。所以Person结构体占20+4+4=28字节。
也有特殊情况:
其中最大成员是double,占8字节,而intfloat一共占用8字节,char数组占用20字节,补位时,我们只需要对char数组补位到24字节,即24+8+8=40字节

2、typedef的使用

使用 typedef 关键字,可以为现有的数据类型定义一个新的名称,使其在后续代码中可以使用这个别名来代替原始类型。这样做可以使代码更加清晰,提高代码的可读性和可理解性。
下面是一个使用 typedef 的示例:、
还能与结构体一起使用:

3、C++的引用

C++支持所有的C语言语法,在C语言上进行了拓展,其中有一个语法叫做引用,引用可以被看作是已存在变量的一个别名,它们在内存中共享同一地址。通过引用,可以通过原变量名称或引用名称来访问和修改相同的数据。
在C++中,使用&符号来声明引用,并在声明时将其与对应的变量进行绑定。下面是一个简单的示例:
此时,输出的a的值为11,如上方描述,change函数中的引用&b只是给a取了个别名b,他们共用同一个地址,所以对b的值做修改,a的值也会做相应改变。
引用有个极其重要的使用方式,就是在子函数内修改主函数的一级指针变量,代码如下:
如果是要使用C语言来实现此功能,就要用到二级指针:
同时,在C++中是有布尔数据类型的,他们的写法是这样的:
我们输出可以发现,true的值其实是1false的值其实是0
上一篇
Harmony OS开发-TypeScript快速入门
下一篇
博客封面生成-记一次修复Bug并新增功能的PR

评论
Loading...