C++基础——数组
数组:所谓数组,就是一个放了相同类型的数据元素集合
特点一:数组中的每个数据元素都是相同的数据类型。
特点二:数组是有连续的内存位置组成的。
一维数组定义方式:
1、数据类型 数组名 [数组长度];
2、数据类型 数组名 [数组长度] = {值1,值2,……};
3、数据类型 数组名[] = {值1,值2,……};
一维数组名用途:
1、可以统计整个数组在内存中的长度 sizeof(arr)
2、可以获取数组在内存中的首地址 cout << arr <<endl;
二维数组定义方式:
1、数据类型 数组名 [行数][列数];
2、数据类型 数组名 [行数][列数]= {值1,值2,值3,值4,……};
2、数据类型 数组名 [行数][列数]= {{值1,值2},{值3,值4},……};
3、数据类型 数组名[] [列数]= {值1,值2,值3,值4,……};
二维数组名用途:
1、查看二维数组占用的内存空间大小
2、可以查看二维数组的首地址
函数:
作用:将一段经常使用的代码封装起来,减少代码重复。
一个较大的程序,一般分为若干程序块,每个模块实现特定的功能。
函数的定义:
1、返回值类型
2、函数名
3、参数表列
4、函数体语句
5、return表达式
语法:
返回值类型 函数名(参数表列){
函数体语句;
return 表达式;
}
函数的调用:函数名(参数);
值传递:
定义函数实现两个数字进行交换函数。
值传递时, 如果形参发生,并不会影响实参
函数的常见样式:
1、无参无返
2、有参无返
3、无参有返
4、有参有返
函数声明:返回值类型 函数名(形参列表);
告诉编译器函数名称及如何调用函数,函数的实际主体可以单独定义。
函数的声明可以多次,函数的定义只能有一次。
函数的分文件编写:让代码结构更加清晰。
函数分文件编写一般有四个步骤:
1、创建后缀名为.h的头文件
2、创建后缀名为.cpp的源文件
3、在头文件中写函数的声明;需要写头文件的框架。
4、在源文件中写函数的定义;需要引入定义的头文件。
指针:记录地址;
定义指针的语法:数据类型 * 指针变量名;
让指针指向变量的地址:指针变量 = &变量;
使用指针:可以通过解引用的方式来找到指针指向的内存。
指针前加 * 代表解引用,找到指针指向内存中的数据。
指针占内存空间: 在32位操作系统下,指针是占4个字节空间大小,不管是什么数据类型;在64位操作系统,指针是占8个直接空间大小。
空指针:指针变量指向内存中编号为零的空间;
用途:初始化指针变量;
注意:空指针指向的内存是不可以访问的
野指针:指针变量指向非法的内存空间。
const修饰指针:
const 数据类型 * 指针变量
1、const修饰指针--常量指针:指针指向可以改,指针指向的值不可以改。
数据类型 * const 指针变量
2、const修饰常量--指针常量:指针指向不可以改,指针指向的值可以更改。
const 数据类型 * const 指针变量
3、const即修饰指针,又修饰常量:指针指向和指向的值都不可以改。
指针和函数:值传递: 如果形参发生,并不会影响实参;
用指针进行地址传递:形参改变,实参跟着改变;
结构体:
结构体定义:struct 结构体名 {结构体成员列表};
通过结构体创建变量的方式有三种:
1、struct 结构体名 变量名
2、struct 结构体名 变量名 = {成员1值,成员2值}
3、定义结构体时顺便创建变量
结构体数组:将自定义的结构体放入到数组中方便维护
语法:struct 结构体名 数组名{元素个数} = {{},{},{},……{}}
结构体指针:通过指针访问结构体中的成员;利用操作符->可以通过结构体指针访问结构体属性;
结构体嵌套结构体:结构体中的成员可以是另一个结构体;
结构体做函数参数:将结构体作为参数向函数中传递;值传递、地址传递;
结构体中const使用场景:用const来防止误操作。形参前面加const,一旦函数体中有写操作就会报错,可以防止我们的误操作。

浙公网安备 33010602011771号