
学习 C 语言中的数组包括其概念、声明、初始化、访问、多维数组以及常见注意事项。1. 数组的基本概念数组是一种用于存储固定数量、相同类型数据元素的数据结构。数组中的元素在内存中是连续存储的。数组中的每个元素可以通过一个索引下标来访问。元素Element数组中存储的每个数据项。索引Index用于访问数组中特定元素的位置标识符。C 语言中数组的索引从0开始。长度Length数组可以容纳的元素个数。数组一旦声明其长度通常是固定的。2. 一维数组2.1 声明声明数组需要指定元素的类型、数组名以及数组的大小用方括号[]括起来。数据类型 数组名[数组长度];示例int scores[5]; // 声明一个可以存储 5 个整数的数组 float temperatures[10]; // 声明一个可以存储 10 个浮点数的数组 char name[20]; // 声明一个可以存储 20 个字符的数组常用于字符串2.2 初始化可以在声明数组的同时为其元素赋初值。// 方式一完全初始化 int numbers[5] {10, 20, 30, 40, 50}; // 方式二部分初始化剩余元素自动初始化为 0 int partial[5] {1, 2}; // [1, 2, 0, 0, 0] // 方式三省略长度编译器根据初始化列表确定长度 int autoSize[] {1, 3, 5, 7}; // 长度为 42.3 访问元素使用数组名和索引下标访问元素数组名[索引]示例int arr[3] {5, 10, 15}; printf(%d, arr[0]); // 输出第一个元素: 5 arr[1] 20; // 修改第二个元素为 20 printf(%d, arr[2]); // 输出第三个元素: 152.4 遍历数组通常使用for循环遍历数组int arr[5] {1, 2, 3, 4, 5}; for (int i 0; i 5; i) { printf(%d , arr[i]); // 输出: 1 2 3 4 5 }3. 多维数组C 语言支持多维数组最常见的是二维数组矩阵。3.1 二维数组的声明与初始化数据类型 数组名[行数][列数];示例int matrix[2][3]; // 2行3列的整数矩阵 // 初始化 int matrix2[2][3] { {1, 2, 3}, // 第0行 {4, 5, 6} // 第1行 };3.2 访问二维数组元素使用两个索引行索引和列索引。数组名[行索引][列索引]示例int value matrix2[0][1]; // 获取第0行第1列的元素: 2 matrix2[1][2] 10; // 修改第1行第2列的元素为103.3 遍历二维数组使用嵌套循环for (int i 0; i 2; i) { // 行 for (int j 0; j 3; j) { // 列 printf(%d , matrix2[i][j]); } printf(\n); } // 输出: // 1 2 3 // 4 5 104. 数组与内存数组元素在内存中是连续存储的。例如对于int arr[3]地址: 0x1000: arr[0] 地址: 0x1004: arr[1] (int 类型通常占4字节) 地址: 0x1008: arr[2]5. 数组与指针的关系数组名本质上是指向数组首元素的指针常量。int arr[3] {10, 20, 30}; int *ptr arr; // ptr 指向 arr[0] printf(%d, *ptr); // 输出: 10 printf(%d, *(ptr 1)); // 输出: 20 (等价于 arr[1])6. 动态数组堆内存分配静态数组长度在编译时固定。若需要运行时确定长度需使用动态内存分配malloc,calloc#include stdlib.h int main() { int n 5; int *dynamicArr (int *)malloc(n * sizeof(int)); // 分配5个int的空间 if (dynamicArr ! NULL) { for (int i 0; i n; i) { dynamicArr[i] i * 2; } free(dynamicArr); // 释放内存 } return 0; }7. 常见错误与注意事项索引越界访问超出数组范围的索引如arr[5]访问长度为5的数组可能导致程序崩溃或不可预测行为。未初始化局部数组若未初始化其元素值为不确定可能是任意值。数组长度固定静态数组长度不能在运行时改变。数组名不可修改数组名是常量指针不能进行arr等操作。8. 示例数组求和#include stdio.h int main() { int arr[] {3, 7, 2, 9, 5}; int sum 0; int length sizeof(arr) / sizeof(arr[0]); // 计算数组长度 for (int i 0; i length; i) { sum arr[i]; } printf(数组元素之和: %d\n, sum); // 输出: 26 return 0; }通过以上内容你应该对 C 语言数组有了全面的理解。如有疑问请随时提出好的我们将系统地学习 C 语言中的数组包括其概念、声明、初始化、访问、多维数组以及常见注意事项。1. 数组的基本概念数组是一种用于存储固定数量、相同类型数据元素的数据结构。数组中的元素在内存中是连续存储的。数组中的每个元素可以通过一个索引下标来访问。元素Element数组中存储的每个数据项。索引Index用于访问数组中特定元素的位置标识符。C 语言中数组的索引从0开始。长度Length数组可以容纳的元素个数。数组一旦声明其长度通常是固定的。2. 一维数组2.1 声明声明数组需要指定元素的类型、数组名以及数组的大小用方括号[]括起来。数据类型 数组名[数组长度];示例int scores[5]; // 声明一个可以存储 5 个整数的数组 float temperatures[10]; // 声明一个可以存储 10 个浮点数的数组 char name[20]; // 声明一个可以存储 20 个字符的数组常用于字符串2.2 初始化可以在声明数组的同时为其元素赋初值。// 方式一完全初始化 int numbers[5] {10, 20, 30, 40, 50}; // 方式二部分初始化剩余元素自动初始化为 0 int partial[5] {1, 2}; // [1, 2, 0, 0, 0] // 方式三省略长度编译器根据初始化列表确定长度 int autoSize[] {1, 3, 5, 7}; // 长度为 42.3 访问元素使用数组名和索引下标访问元素数组名[索引]示例int arr[3] {5, 10, 15}; printf(%d, arr[0]); // 输出第一个元素: 5 arr[1] 20; // 修改第二个元素为 20 printf(%d, arr[2]); // 输出第三个元素: 152.4 遍历数组通常使用for循环遍历数组int arr[5] {1, 2, 3, 4, 5}; for (int i 0; i 5; i) { printf(%d , arr[i]); // 输出: 1 2 3 4 5 }3. 多维数组C 语言支持多维数组最常见的是二维数组矩阵。3.1 二维数组的声明与初始化数据类型 数组名[行数][列数];示例int matrix[2][3]; // 2行3列的整数矩阵 // 初始化 int matrix2[2][3] { {1, 2, 3}, // 第0行 {4, 5, 6} // 第1行 };3.2 访问二维数组元素使用两个索引行索引和列索引。数组名[行索引][列索引]示例int value matrix2[0][1]; // 获取第0行第1列的元素: 2 matrix2[1][2] 10; // 修改第1行第2列的元素为103.3 遍历二维数组使用嵌套循环for (int i 0; i 2; i) { // 行 for (int j 0; j 3; j) { // 列 printf(%d , matrix2[i][j]); } printf(\n); } // 输出: // 1 2 3 // 4 5 104. 数组与内存数组元素在内存中是连续存储的。例如对于int arr[3]地址: 0x1000: arr[0] 地址: 0x1004: arr[1] (int 类型通常占4字节) 地址: 0x1008: arr[2]5. 数组与指针的关系数组名本质上是指向数组首元素的指针常量。int arr[3] {10, 20, 30}; int *ptr arr; // ptr 指向 arr[0] printf(%d, *ptr); // 输出: 10 printf(%d, *(ptr 1)); // 输出: 20 (等价于 arr[1])6. 动态数组堆内存分配静态数组长度在编译时固定。若需要运行时确定长度需使用动态内存分配malloc,calloc#include stdlib.h int main() { int n 5; int *dynamicArr (int *)malloc(n * sizeof(int)); // 分配5个int的空间 if (dynamicArr ! NULL) { for (int i 0; i n; i) { dynamicArr[i] i * 2; } free(dynamicArr); // 释放内存 } return 0; }7. 常见错误与注意事项索引越界访问超出数组范围的索引如arr[5]访问长度为5的数组可能导致程序崩溃或不可预测行为。未初始化局部数组若未初始化其元素值为不确定可能是任意值。数组长度固定静态数组长度不能在运行时改变。数组名不可修改数组名是常量指针不能进行arr等操作。8. 示例数组求和#include stdio.h int main() { int arr[] {3, 7, 2, 9, 5}; int sum 0; int length sizeof(arr) / sizeof(arr[0]); // 计算数组长度 for (int i 0; i length; i) { sum arr[i]; } printf(数组元素之和: %d\n, sum); // 输出: 26 return 0; }通过以上内容你应该对 C 语言数组有了全面的理解。如有疑问请随时提出好的我们将系统地学习 C 语言中的数组包括其概念、声明、初始化、访问、多维数组以及常见注意事项。1. 数组的基本概念数组是一种用于存储固定数量、相同类型数据元素的数据结构。数组中的元素在内存中是连续存储的。数组中的每个元素可以通过一个索引下标来访问。元素Element数组中存储的每个数据项。索引Index用于访问数组中特定元素的位置标识符。C 语言中数组的索引从0开始。长度Length数组可以容纳的元素个数。数组一旦声明其长度通常是固定的。2. 一维数组2.1 声明声明数组需要指定元素的类型、数组名以及数组的大小用方括号[]括起来。数据类型 数组名[数组长度];示例int scores[5]; // 声明一个可以存储 5 个整数的数组 float temperatures[10]; // 声明一个可以存储 10 个浮点数的数组 char name[20]; // 声明一个可以存储 20 个字符的数组常用于字符串2.2 初始化可以在声明数组的同时为其元素赋初值。// 方式一完全初始化 int numbers[5] {10, 20, 30, 40, 50}; // 方式二部分初始化剩余元素自动初始化为 0 int partial[5] {1, 2}; // [1, 2, 0, 0, 0] // 方式三省略长度编译器根据初始化列表确定长度 int autoSize[] {1, 3, 5, 7}; // 长度为 42.3 访问元素使用数组名和索引下标访问元素数组名[索引]示例int arr[3] {5, 10, 15}; printf(%d, arr[0]); // 输出第一个元素: 5 arr[1] 20; // 修改第二个元素为 20 printf(%d, arr[2]); // 输出第三个元素: 152.4 遍历数组通常使用for循环遍历数组int arr[5] {1, 2, 3, 4, 5}; for (int i 0; i 5; i) { printf(%d , arr[i]); // 输出: 1 2 3 4 5 }3. 多维数组C 语言支持多维数组最常见的是二维数组矩阵。3.1 二维数组的声明与初始化数据类型 数组名[行数][列数];示例int matrix[2][3]; // 2行3列的整数矩阵 // 初始化 int matrix2[2][3] { {1, 2, 3}, // 第0行 {4, 5, 6} // 第1行 };3.2 访问二维数组元素使用两个索引行索引和列索引。数组名[行索引][列索引]示例int value matrix2[0][1]; // 获取第0行第1列的元素: 2 matrix2[1][2] 10; // 修改第1行第2列的元素为103.3 遍历二维数组使用嵌套循环for (int i 0; i 2; i) { // 行 for (int j 0; j 3; j) { // 列 printf(%d , matrix2[i][j]); } printf(\n); } // 输出: // 1 2 3 // 4 5 104. 数组与内存数组元素在内存中是连续存储的。例如对于int arr[3]地址: 0x1000: arr[0] 地址: 0x1004: arr[1] (int 类型通常占4字节) 地址: 0x1008: arr[2]5. 数组与指针的关系数组名本质上是指向数组首元素的指针常量。int arr[3] {10, 20, 30}; int *ptr arr; // ptr 指向 arr[0] printf(%d, *ptr); // 输出: 10 printf(%d, *(ptr 1)); // 输出: 20 (等价于 arr[1])6. 动态数组堆内存分配静态数组长度在编译时固定。若需要运行时确定长度需使用动态内存分配malloc,calloc#include stdlib.h int main() { int n 5; int *dynamicArr (int *)malloc(n * sizeof(int)); // 分配5个int的空间 if (dynamicArr ! NULL) { for (int i 0; i n; i) { dynamicArr[i] i * 2; } free(dynamicArr); // 释放内存 } return 0; }7. 常见错误与注意事项索引越界访问超出数组范围的索引如arr[5]访问长度为5的数组可能导致程序崩溃或不可预测行为。未初始化局部数组若未初始化其元素值为不确定可能是任意值。数组长度固定静态数组长度不能在运行时改变。数组名不可修改数组名是常量指针不能进行arr等操作。8. 示例数组求和#include stdio.h int main() { int arr[] {3, 7, 2, 9, 5}; int sum 0; int length sizeof(arr) / sizeof(arr[0]); // 计算数组长度 for (int i 0; i length; i) { sum arr[i]; } printf(数组元素之和: %d\n, sum); // 输出: 26 return 0; }