goto
是 C 语言中的一种控制流语句
goto允许程序无条件跳转到代码中的另一个位置
通过 goto
语句,可以使用标签(label)标识要跳转的位置
label: // 标签定义(记住后面有个: 同时标签是你自己定义的,且标签必须在使用 goto 语句之前定义)
goto label; // 跳转到标签
goto往往会降低代码的可读性和可维护性,导致“意大利面条代码”,因此在现代编程中通常不建议使用 goto
goto加条件语句(如if)将是绝杀
数组,即数据的集合
它是一个可以存放多个相同类型变量的容器
type(如int、char、float等等数据类型) 数组名(自行定义) [size](数组可以存储的元素个数);
比如说:
int numbers[5]; // 定义一个可以存放5个整数的数组
数组也需要初始化,和定义变量一样,你既可以在定义数组时进行初始化,也可以在后期赋值
int numbers[5] = {1, 2, 3, 4, 5}; // 定义并初始化
初始化是用{ }而不是(),同时里面用逗号运算符进行分隔定义的元素
int numbers[5] = {1, 2}; // numbers = {1, 2, 0, 0, 0}
这个代码块的问题是,表明了5个数据但是只初始化了前两个,那么编译器就会自动将未赋值的元素会被初始化为 0 (确实挺爽)
访问数组元素
我们通过下标(也即中括号里面的数字)来访问数组中的元素。你用的时候得知道数组的下标从 0 开始,所以第一个元素的下标是 0,第二个是 1,以此类推
int first = numbers[0]; // 访问第一个元素
numbers[1] = 10; // 修改第二个元素为 10
数组的大小
可以使用 sizeof
操作符获取数组的大小(以字节为单位)。要获取元素个数,可以将数组的总字节数除以每个元素的字节数
int size = sizeof(numbers) / sizeof(numbers[0]); // 获取数组元素个数
想要遍历数组(只是提醒下)
可以使用循环来遍历数组中的每个元素
for (int i = 0; i < 5; i++) {
printf("%d\n", numbers[i]); // 输出每个元素
}
多维数组
在 C 语言中,多维数组是数组的数组,最常见的是二维数组
type 数组名[size1][size2];
连用两个[ ],size1
表示第一维的大小,size2
表示第二维的大小
int matrix[3][4]; // 定义一个 3 行 4 列的整数二维数组
3行4列是什么意思?
- 3 表示数组的行数(即有 3 行)
- 4 表示数组的列数(即每行有 4 列)
因此,matrix[3][4]
的结构可以表示为一个包含 3 行和 4 列的表格,具体可视化如下:
行 -> 列 0 列 1 列 2 列 3
行 0 | m[0][0] m[0][1] m[0][2] m[0][3]
行 1 | m[1][0] m[1][1] m[1][2] m[1][3]
行 2 | m[2][0] m[2][1] m[2][2] m[2][3]
先行后列
这样,matrix[i][j]
可以用来访问第 i
行第 j
列的元素,例如:
matrix[0][0]
访问第一行第一列的元素matrix[1][2]
访问第二行第三列的元素
对多维数组进行初始化
以二维数组进行示例
int matrix[3][4] = {
{1, 2, 3, 4},//第一行对应的4列
{5, 6, 7, 8},//以此类推
{9, 10, 11, 12}
};
//就是还是得用花括号,但里面又有花括号,分别用逗号运算符隔开
遍历多维数组
可采用嵌套循环语句来实现
for (int i = 0; i < 3; i++) { // 遍历行
for (int j = 0; j < 4; j++) { // 遍历列
printf("%d ", matrix[i][j]); // 输出每个元素
}
printf("\n"); // 换行
}
多维数组通常用于存储表格类型的数据、图形图像、矩阵运算等。在需要表示多个属性或关系的情况下,使用多维数组可以很方便地组织和处理数据
数组在编程中非常有用
以下利用chatgpt进行说明
1. 存储多个相同类型的数据
数组可以存储多个相同类型的元素,这样可以使用一个变量名来引用多个数据,避免了使用多个标量变量的问题
示例:
int scores[5]; // 存储 5 个学生的分数,这样便无需一个一个地定义变量
2. 方便的数据管理
通过数组可以方便地管理、操作和访问一组相关数据。例如,使用数组可以轻松对数据进行排序、查找等操作
3. 数据的整合和处理
在处理数学和统计问题时,数组提供了一种整合数据的方式,使对数据的运算和查询变得高效
示例: 计算一组数字的平均值:
float average(int arr[], int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return (float)sum / size;
}
//孩子麻了,看不懂,先放着
4. 实现复杂数据结构
数组是实现其他复杂数据结构(如字符串、矩阵、表格和图形)的基础。例如,二维数组常用于表示矩阵或表格数据
5. 存储固定数量的数据
在知道数据量是固定的情况下,数组是非常合适的选择。这使得内存管理变得简单,因为长度是已知的
6. 高效的内存访问
由于数组在内存中是连续存储的,这使得访问数据非常快速,尤其是在需要频繁读取数据的场合
7. 多维数据表示
数组可以扩展到多维,方便地表示更复杂的关系。二维数组可以用于表示图像、表格等,三维数组可用于表示立体数据
示例:
c复制代码int matrix[3][3]; // 表示 3x3 矩阵
8. 与其他库和算法的兼容
很多现成的库和算法都是基于数组实现的,比如数学库、图形库等,通过数组可以方便地与这些功能进行交互
9. 简化计算
在编写算法时,数组可以直接用来存储多重结果,减少变量的数量,从而使代码更简洁
10. 工具和游戏开发
在游戏开发中,数组常用于存储游戏中的对象、角色、地图等信息,简化了程序的架构和逻辑
Comments NOTHING