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个char
占20
个字节,与4
成整数倍。所以Person
结构体占20+4+4=28
字节。也有特殊情况:
其中最大成员是
double
,占8
字节,而int
与float
一共占用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
的值其实是1
,false
的值其实是0
。- 作者:Rainvice
- 链接:https://rainvice.com/article/402bc06d-412d-4164-ac63-57f2533aa3e6
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。