【C语言】数组篇

[复制链接]
发表于 2025-10-20 22:06:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
弁言

在 C 语言的天下里,数组是一种底子且强盛的数据结构。它就像一个整洁分列的盒子,每个盒子都可以存放类似范例的数据。通过公道使用数组,我们可以或许高效地处置惩罚大量的数据。本文将从数组的根本概念入手,渐渐深入探究其在实际编程中的应用。
一维数组

数组的界说

在 C 语言中,界说一维数组的语法如下:
  1. 类型说明符 数组名[常量表达式];
复制代码
这里的范例阐明符决定了数组中每个元素的范例,比如int表现整数范例,float 表现浮点范例等。数组名是我们给这个数组起的名字,方便后续引用。而常量表达式则规定了数组的长度,也就是数组中元素的个数。
比方:
  1. int scores[5];
复制代码
这行代码界说了一个名为 scores 的整数数组,它可以存储 5 个整数。必要注意的是,常量表达式必须是一个常量大概常量表达式,不能是变量。
数组的初始化

数组的初始化有多种方式,下面我们来逐一先容。
完全初始化

当我们知道数组中每个元素的值时,可以举行完全初始化。
  1. int numbers[5] = {1, 2, 3, 4, 5};
复制代码
在这个例子中,数组 numbers 的 5 个元素分别被初始化为 1、2、3、4、5。
部分初始化

如果只知道数组的部分元素值,别的元素会被自动初始化为 0。
  1. int numbers[5] = {1, 2};
复制代码
此时,numbers[0] 为 1,numbers[1] 为 2,而 numbers[2]、numbers[3] 和 numbers[4] 都为 0。
省略数组长度

当我们在初始化时提供了全部元素的值,可以省略数组的长度,编译器会自动根据初始化的值来确定命组的长度。
  1. int numbers[] = {1, 2, 3, 4, 5};
复制代码
这里数组 numbers 的长度被编译器确定为 5。
数组元素的访问

数组元素通过下标来访问,下标从 0 开始。比方,对于前面界说的numbers数组,numbers[0]表现数组的第一个元素,numbers[1]表现第二个元素,以此类推。
  1. #include <stdio.h>int main() {    int numbers[5] = {1, 2, 3, 4, 5};
  2.     printf("The first element is: %d\n", numbers[0]);    printf("The third element is: %d\n", numbers[2]);    return 0;}
复制代码
在这段代码中,我们通过下标访问了数组numbers的第一个和第三个元素,并将它们打印输出。
多维数组

二维数组的界说

二维数组可以看作是一个矩阵,它的界说语法如下:
  1. 类型说明符 数组名[常量表达式1][常量表达式2];
复制代码
常量表达式 1 表现数组的行数,常量表达式 2 表现数组的列数。
比方:
  1. int matrix[3][4];
复制代码
这界说了一个 3 行 4 列的二维数组matrix。
二维数组的初始化

二维数组的初始化也有多种方式。
完全初始化

  1. int matrix[3][4] = {
  2.     {1, 2, 3, 4},
  3.     {5, 6, 7, 8},
  4.     {9, 10, 11, 12}
  5. };
复制代码
这里,我们将二维数组 matrix 的每个元素都举行了初始化。
部分初始化

  1. int matrix[3][4] = {
  2.     {1, 2},
  3.     {5},
  4.     {9, 10, 11}
  5. };
复制代码
未初始化的元素会被自动初始化为 0。
省略第一维长度

  1. int matrix[][4] = {
  2.     {1, 2, 3, 4},
  3.     {5, 6, 7, 8},
  4.     {9, 10, 11, 12}
  5. };
复制代码
编译器会根据初始化的值自动确定第一维的长度。
二维数组元素的访问

二维数组元素通过行下标和列下标来访问,行下标和列下标都从 0 开始。
  1. #include <stdio.h>
  2. int main() {
  3.     int matrix[3][4] = {
  4.         {1, 2, 3, 4},
  5.         {5, 6, 7, 8},
  6.         {9, 10, 11, 12}
  7.     };
  8.     printf("The element at row 1, column 2 is: %d\n", matrix[1][2]);
  9.     return 0;
  10. }
复制代码
在这个例子中,我们访问了二维数组 matrix 中第二行第三列的元素。
遍历数组元素

遍历一维数组

for 循环是遍历一维数组最常用的方法,通过控制循环变量作为数组的下标来依次访问数组元素。
  1. #include <stdio.h>
  2. int main() {
  3.     int arr[5] = {1, 2, 3, 4, 5};
  4.     int i;
  5.     // 遍历数组并打印每个元素
  6.     for (i = 0; i < 5; i++) {
  7.         printf("%d ", arr[i]);
  8.     }
  9.     printf("\n");
  10.     return 0;
  11. }
复制代码
遍历二维数组

对于二维数组,通常使用嵌套的 for 循环来遍历,外层循环控制行,内层循环控制列。
  1. #include <stdio.h>
  2. int main() {
  3.     int arr[3][4] = {
  4.         {1, 2, 3, 4},
  5.         {5, 6, 7, 8},
  6.         {9, 10, 11, 12}
  7.     };
  8.     int i, j;
  9.     // 外层循环控制行
  10.     for (i = 0; i < 3; i++) {
  11.         // 内层循环控制列
  12.         for (j = 0; j < 4; j++) {
  13.             printf("%d ", arr[i][j]);
  14.         }
  15.         printf("\n");
  16.     }
  17.     return 0;
  18. }
复制代码
数组作为函数参数

数组可以作为函数的参数转达,这在处置惩罚大量数据时非常有用。
一维数组作为函数参数

当一维数组作为函数参数时,实际上转达的是数组的首地点。
  1. #include <stdio.h>// 函数声明void printArray(int arr[], int size);int main() {    int numbers[5] = {1, 2, 3, 4, 5};
  2.     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 担当一个一维数组和数组的长度作为参数,并将数组中的元素打印输出。
二维数组作为函数参数

二维数组作为函数参数时,必要指定第二维的长度。
  1. #include <stdio.h>
  2. // 函数声明
  3. void printMatrix(int matrix[][4], int rows);
  4. int main() {
  5.     int matrix[3][4] = {
  6.         {1, 2, 3, 4},
  7.         {5, 6, 7, 8},
  8.         {9, 10, 11, 12}
  9.     };
  10.     printMatrix(matrix, 3);
  11.     return 0;
  12. }
  13. // 函数定义
  14. void printMatrix(int matrix[][4], int rows) {
  15.     for (int i = 0; i < rows; i++) {
  16.         for (int j = 0; j < 4; j++) {
  17.             printf("%d ", matrix[i][j]);
  18.         }
  19.         printf("\n");
  20.     }
  21. }
复制代码
这里,函数 printMatrix 担当一个二维数组和数组的行数作为参数,并将二维数组的元素打印输出。
注意事项

数组越界

在访问数组时,肯定要确保下标在正当范围内。如果下标超出了数组的长度,会导致未界说举动,大概会引发步伐瓦解或产生不可预期的结果。
数组名作为指针

在大多数环境下,数组名会被隐式转换为指向数组首元素的指针。但在使用sizeof运算符时,数组名表现整个数组。
  1. #include <stdio.h>int main() {    int numbers[5] = {1, 2, 3, 4, 5};
  2.     printf("The size of the array is: %zu\n", sizeof(numbers));    return 0;}
复制代码
在这个例子中,sizeof(numbers) 返回的是整个数组的巨细,而不是指针的巨细。
总结

C 语言数组是一种非常告急的数据结构,它可以资助我们高效地处置惩罚大量类似范例的数据。通过把握一维数组、多维数组的界说、初始化和访问,以及数组作为函数参数的使用方法,我们可以或许编写出更加高效、机动的步伐。同时,要注意数组越界等题目,制止步伐出现错误。盼望本文能资助你更好地明确和使用 C 语言数组。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表