马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
弁言
在 C 语言的天下里,数组是一种底子且强盛的数据结构。它就像一个整洁分列的盒子,每个盒子都可以存放类似范例的数据。通过公道使用数组,我们可以或许高效地处置惩罚大量的数据。本文将从数组的根本概念入手,渐渐深入探究其在实际编程中的应用。
一维数组
数组的界说
在 C 语言中,界说一维数组的语法如下:
这里的范例阐明符决定了数组中每个元素的范例,比如int表现整数范例,float 表现浮点范例等。数组名是我们给这个数组起的名字,方便后续引用。而常量表达式则规定了数组的长度,也就是数组中元素的个数。
比方:
这行代码界说了一个名为 scores 的整数数组,它可以存储 5 个整数。必要注意的是,常量表达式必须是一个常量大概常量表达式,不能是变量。
数组的初始化
数组的初始化有多种方式,下面我们来逐一先容。
完全初始化
当我们知道数组中每个元素的值时,可以举行完全初始化。
- int numbers[5] = {1, 2, 3, 4, 5};
复制代码 在这个例子中,数组 numbers 的 5 个元素分别被初始化为 1、2、3、4、5。
部分初始化
如果只知道数组的部分元素值,别的元素会被自动初始化为 0。
此时,numbers[0] 为 1,numbers[1] 为 2,而 numbers[2]、numbers[3] 和 numbers[4] 都为 0。
省略数组长度
当我们在初始化时提供了全部元素的值,可以省略数组的长度,编译器会自动根据初始化的值来确定命组的长度。
- int numbers[] = {1, 2, 3, 4, 5};
复制代码 这里数组 numbers 的长度被编译器确定为 5。
数组元素的访问
数组元素通过下标来访问,下标从 0 开始。比方,对于前面界说的numbers数组,numbers[0]表现数组的第一个元素,numbers[1]表现第二个元素,以此类推。
- #include <stdio.h>int main() { int numbers[5] = {1, 2, 3, 4, 5};
- printf("The first element is: %d\n", numbers[0]); printf("The third element is: %d\n", numbers[2]); return 0;}
复制代码 在这段代码中,我们通过下标访问了数组numbers的第一个和第三个元素,并将它们打印输出。
多维数组
二维数组的界说
二维数组可以看作是一个矩阵,它的界说语法如下:
- 类型说明符 数组名[常量表达式1][常量表达式2];
复制代码 常量表达式 1 表现数组的行数,常量表达式 2 表现数组的列数。
比方:
这界说了一个 3 行 4 列的二维数组matrix。
二维数组的初始化
二维数组的初始化也有多种方式。
完全初始化
- int matrix[3][4] = {
- {1, 2, 3, 4},
- {5, 6, 7, 8},
- {9, 10, 11, 12}
- };
复制代码 这里,我们将二维数组 matrix 的每个元素都举行了初始化。
部分初始化
- int matrix[3][4] = {
- {1, 2},
- {5},
- {9, 10, 11}
- };
复制代码 未初始化的元素会被自动初始化为 0。
省略第一维长度
- int matrix[][4] = {
- {1, 2, 3, 4},
- {5, 6, 7, 8},
- {9, 10, 11, 12}
- };
复制代码 编译器会根据初始化的值自动确定第一维的长度。
二维数组元素的访问
二维数组元素通过行下标和列下标来访问,行下标和列下标都从 0 开始。
- #include <stdio.h>
- int main() {
- int matrix[3][4] = {
- {1, 2, 3, 4},
- {5, 6, 7, 8},
- {9, 10, 11, 12}
- };
- printf("The element at row 1, column 2 is: %d\n", matrix[1][2]);
- return 0;
- }
复制代码 在这个例子中,我们访问了二维数组 matrix 中第二行第三列的元素。
遍历数组元素
遍历一维数组
for 循环是遍历一维数组最常用的方法,通过控制循环变量作为数组的下标来依次访问数组元素。
- #include <stdio.h>
- int main() {
- int arr[5] = {1, 2, 3, 4, 5};
- int i;
- // 遍历数组并打印每个元素
- for (i = 0; i < 5; i++) {
- printf("%d ", arr[i]);
- }
- printf("\n");
- return 0;
- }
复制代码 遍历二维数组
对于二维数组,通常使用嵌套的 for 循环来遍历,外层循环控制行,内层循环控制列。
- #include <stdio.h>
- int main() {
- int arr[3][4] = {
- {1, 2, 3, 4},
- {5, 6, 7, 8},
- {9, 10, 11, 12}
- };
- int i, j;
- // 外层循环控制行
- for (i = 0; i < 3; i++) {
- // 内层循环控制列
- for (j = 0; j < 4; j++) {
- printf("%d ", arr[i][j]);
- }
- printf("\n");
- }
- return 0;
- }
复制代码 数组作为函数参数
数组可以作为函数的参数转达,这在处置惩罚大量数据时非常有用。
一维数组作为函数参数
当一维数组作为函数参数时,实际上转达的是数组的首地点。
- #include <stdio.h>// 函数声明void printArray(int arr[], int size);int main() { int numbers[5] = {1, 2, 3, 4, 5};
- printArray(numbers, 5); return 0;}// 函数界说void printArray(int arr[], int size) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n");}
复制代码 在这个例子中,函数 printArray 担当一个一维数组和数组的长度作为参数,并将数组中的元素打印输出。
二维数组作为函数参数
二维数组作为函数参数时,必要指定第二维的长度。
- #include <stdio.h>
- // 函数声明
- void printMatrix(int matrix[][4], int rows);
- int main() {
- int matrix[3][4] = {
- {1, 2, 3, 4},
- {5, 6, 7, 8},
- {9, 10, 11, 12}
- };
- printMatrix(matrix, 3);
- return 0;
- }
- // 函数定义
- void printMatrix(int matrix[][4], int rows) {
- for (int i = 0; i < rows; i++) {
- for (int j = 0; j < 4; j++) {
- printf("%d ", matrix[i][j]);
- }
- printf("\n");
- }
- }
复制代码 这里,函数 printMatrix 担当一个二维数组和数组的行数作为参数,并将二维数组的元素打印输出。
注意事项
数组越界
在访问数组时,肯定要确保下标在正当范围内。如果下标超出了数组的长度,会导致未界说举动,大概会引发步伐瓦解或产生不可预期的结果。
数组名作为指针
在大多数环境下,数组名会被隐式转换为指向数组首元素的指针。但在使用sizeof运算符时,数组名表现整个数组。
- #include <stdio.h>int main() { int numbers[5] = {1, 2, 3, 4, 5};
- printf("The size of the array is: %zu\n", sizeof(numbers)); return 0;}
复制代码 在这个例子中,sizeof(numbers) 返回的是整个数组的巨细,而不是指针的巨细。
总结
C 语言数组是一种非常告急的数据结构,它可以资助我们高效地处置惩罚大量类似范例的数据。通过把握一维数组、多维数组的界说、初始化和访问,以及数组作为函数参数的使用方法,我们可以或许编写出更加高效、机动的步伐。同时,要注意数组越界等题目,制止步伐出现错误。盼望本文能资助你更好地明确和使用 C 语言数组。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|