4.二维数组
二维数组就是在一维数组上,多加一个维度
定义方式:
- 数据类型 数组名[行数][列数];
- 数据类型 数组名[行数][列数] = {{数据1,数据2},{数据3,数据4}};(个人觉得这个最好)
- 数据类型 数组名[行数][列数] = {数据1,数据2,数据.,数据4};
- 数据类型 数组名[ ][列数] = {数据1,数据2,数据3,数据4};
二维数组数组名
查看二维数组所占空间内存(数据类型所占内存*元素个数)(可以单独查看一行所占的内存空间)以便获取二维数组的行数和列数
获取二维数组首地址
第一二行首地址相差(每行的元素数*数据类型所占的内存)
七.函数
1.概述
作用:将经常使用的一段代码封装起来,减少重复代码
一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能
2.函数的定义
函数的定义一般分为五个步骤:
- 返回值类型
- 函数名
- 参数表列
- 函数体语句
- return表达式
语法:
返回值类型 函数名 (参数列表)
{
函数体语句
Return表达式
}
3.函数的调用
功能:使用定义好的函数
语法:函数名(参数)
4.值传递
值传递就是函数调用时实参将数值传入形参
值传递时,如果形参发生,并不会影响实参
发生改变的是调用函数中的值
实参只是做一个输入的作用
5.函数的常见样式
(1)无参无返
(2)有参无返
(3)无参有返
(4)有参有返
6.函数的声明(vs2022不用声明)
作用:告诉编译器函数名称及如何调用函数,函数的实际主体可以单独定义
函数的声明可以多次,函数的定义只能有一次
提前告诉编译器函数的存在,可利用函数的声明(可将函数写在main后面)
7.函数的分文件编写
作用:让代码结构更加清晰
函数分文件编写一般有四个步骤
(1)创建后缀名为.h的头文件
(2)创建后缀名为.cpp的源文件
(3)在头文件中写函数的声明
(4)在源文件中写函数的定义
八.指针
1.基本概念(指针就是地址)
指针的作用:可以通过指针间接访问内存
内存编号是从0开始记录的,一般用十六禁止数字表示
可以用指针变量保存地址
2.指针变量的定义和使用
指针变量定义语法:数据类型 * 变量名
3.指针所占内存空间
在32位操作系统下,指针占用4个字节空间
64位下,占8个字节
4.空指针和野指针
空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量
注意:空指针指向的内存时不可以访问的(0~255之间的内存编号是系统占用的,不可访问)
野指针:指针变量指向非法的内存空间
没有申请这块内存的使用,也就无法访问
5.const修饰指针
const修饰指针有三种情况
(1)const修饰指针——常量指针(常量的指针)
特点:指针的指向可以修改,但指针指向的值不可以改
a = 10,b = 10
const int * p = &a
(2)const修饰常量——指针常量(指针是常量)
int * const p = &a
特点:指针的指向不可以改,指针指向的值可以改
(3)const即修饰指针,又修饰常量
特点:指针的指向和指针指向的值都不可以改
const int * const p = &a
6.指针和数组
作用:利用指针访问数组中的元素
(p是整型指针)
7.指针和函数
作用:利用指针作函数参数,可以修改实参的值
地址传递是直接对地址所对应的实参进行访问交换数值,因此可以改变实参
值传递是实参对形参进行输入赋值,形参内部交换数值,自然没改变实参的值
8.结构体
1.概念
结构体属于用户自定义的数据类型,允许用户储存不同的数据类型
2.结构体定义和使用
语法:struct 结构体名 {结构体成员列表};
通过结构体创建变量的方式有三种:
struct 结构体名 变量名
struct 结构体名 变量名 = {成员1值,成员2值...} (个人觉得最好用)
定义结构体时顺便创建变量
3.结构体数组
作用:将自定义的结构体放入数组中方便维护
语法:struct 结构体名 数组名[元素个数] = {{},{}...{}}
(1).定义结构体
(2)创建结构体数组
(3)给结构体数组中的元素赋值
(4)遍历结构体数组
4.结构体指针
作用:通过指针访问结构体中的成员
利用操作符 -> 可以通过结构体指针访问结构体属性
(1)创建结构体变量
(2)通过指针指向结构体变量
(3)通过指针访问结构体变量中的数据
5.结构体嵌套结构体
作用:结构体中的成员可以是另一个结构体
例:每个老师辅导一个学生,一个老师的结构体中,记录一个学生的结构体
6.结构体做函数参数
作用:将结构体作为参数向函数中传递
传递方式有两种
值传递
地址传递
7.结构体中const使用场景
作用:用const来防止误操作(防止误修改)
值传递需要占用额外的内存将数据复制一份,地址传递相对可以减少内存空间
缺点是信息会被改变,这是需要用const来防止其中信息发生改变