C语言数组
- 手机
- 2025-09-12 21:48:02

在C语言中,数组是一种非常重要且基础的数据结构,它允许你存储多个相同类型的元素。下面从数组的定义、初始化、访问、多维数组、数组与指针的关系等方面详细介绍C语言数组。
1. 数组的定义数组是一组具有相同数据类型的元素的集合,这些元素在内存中是连续存储的。数组定义的一般形式如下:
数据类型 数组名[数组大小]; 数据类型:指定数组中每个元素的数据类型,如int、float、char等。数组名:是数组的标识符,用于引用数组。数组大小:指定数组中元素的个数,必须是一个常量表达式。示例:
int numbers[5]; // 定义一个包含5个整数的数组 float scores[10]; // 定义一个包含10个浮点数的数组 char letters[26]; // 定义一个包含26个字符的数组 2. 数组的初始化数组可以在定义时进行初始化,也可以在后续的代码中进行赋值。
2.1 定义时初始化 // 初始化包含5个整数的数组 int numbers[5] = {1, 2, 3, 4, 5}; // 初始化时可以省略数组大小,编译器会根据初始化列表的元素个数自动确定数组大小 int numbers2[] = {10, 20, 30, 40, 50}; // 部分初始化,未初始化的元素会被自动初始化为0 int numbers3[5] = {1, 2}; // numbers3数组元素为 {1, 2, 0, 0, 0} 2.2 后续赋值 int numbers[5]; numbers[0] = 1; numbers[1] = 2; numbers[2] = 3; numbers[3] = 4; numbers[4] = 5; 3. 数组的访问数组元素可以通过下标来访问,数组的下标从0开始,最大下标为数组大小减1。访问数组元素的一般形式如下:
数组名[下标];示例:
#include <stdio.h> int main() { int numbers[5] = {1, 2, 3, 4, 5}; // 访问数组的第一个元素 printf("数组的第一个元素: %d\n", numbers[0]); // 修改数组的第三个元素 numbers[2] = 10; printf("修改后的数组第三个元素: %d\n", numbers[2]); return 0; } 4. 多维数组C语言支持多维数组,最常见的是二维数组。二维数组可以看作是一个表格,有行和列。
4.1 二维数组的定义 数据类型 数组名[行数][列数];示例:
int matrix[3][4]; // 定义一个3行4列的二维数组 4.2 二维数组的初始化 // 初始化3行4列的二维数组 int matrix[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; // 部分初始化 int matrix2[3][4] = { {1, 2}, {5}, {9, 10, 11} }; 4.3 二维数组的访问 #include <stdio.h> int main() { int matrix[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; // 访问第二行第三列的元素 printf("第二行第三列的元素: %d\n", matrix[1][2]); return 0; } 5. 数组与指针的关系在C语言中,数组名在大多数情况下会被隐式转换为指向数组第一个元素的指针。
#include <stdio.h> int main() { int numbers[5] = {1, 2, 3, 4, 5}; // 数组名numbers被隐式转换为指向数组第一个元素的指针 int *ptr = numbers; // 通过指针访问数组元素 printf("数组的第一个元素: %d\n", *ptr); printf("数组的第二个元素: %d\n", *(ptr + 1)); return 0; } 6. 数组作为函数参数数组可以作为函数的参数传递,在函数中可以对数组元素进行操作。
#include <stdio.h> // 数组作为函数参数 void printArray(int arr[], int size) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { int numbers[5] = {1, 2, 3, 4, 5}; printArray(numbers, 5); return 0; } 7.排序算法许多排序算法,如冒泡排序、选择排序、插入排序等,都基于数组来实现.
#include <stdio.h> // 冒泡排序 void bubbleSort(int arr[], int size) { for (int i = 0; i < size - 1; i++) { for (int j = 0; j < size - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int numbers[5] = {5, 3, 4, 1, 2}; bubbleSort(numbers, 5); for (int i = 0; i < 5; i++) { printf("%d ", numbers[i]); } printf("\n"); return 0; } 8. 注意事项 数组越界:访问数组时,下标必须在合法范围内(0 到数组大小减 1),否则会导致数组越界,可能会引发不可预测的结果,如程序崩溃或数据损坏。数组大小:数组大小在定义时必须是一个常量表达式,不能使用变量来指定数组大小(在C99及以后的标准中支持变长数组,但使用时需要谨慎)。通过以上内容,你可以全面了解C语言数组的基本概念、使用方法和注意事项,在实际编程中灵活运用数组来解决各种问题。