大家好今天给大家整理了 C 语言数组从入门到实战的完整知识点涵盖一维数组、二维数组、内存存储、变长数组、经典练习题逻辑清晰、代码可直接运行非常适合新手学习和复习。 文章目录数组核心概念一维数组基础核心二维数组进阶必备C99 变长数组VLA数组经典实战练习数组高频易错点总结结语 一、数组核心概念数组是 C 语言中一组相同类型元素的有序集合是编程最常用的数据结构之一。数组中元素类型必须完全相同元素个数不能为 0常见分类一维数组、二维数组最常用的多维数组 二、一维数组基础核心1. 一维数组创建数据类型 数组名[常量值];示例int math[20]; // 存储20个int类型成绩 char ch[8]; // 存储8个char类型字符 double score[10];// 存储10个double类型数据2. 一维数组初始化使用大括号{}赋值分为两种方式完全初始化元素个数与数组大小一致int arr[5] {1, 2, 3, 4, 5};不完全初始化未赋值元素自动补 0int arr[6] {1}; // 等价 {1,0,0,0,0,0}❌ 错误写法初始化项数超过数组int arr[3] {1,2,3,4};3. 数组类型去掉数组名剩余部分就是数组类型int arr[10]→ 类型int [10]char ch[5]→ 类型char [5]4. 一维数组使用下标访问数组下标从 0 开始最后一个元素下标 元素个数 - 1访问格式数组名[下标]#include stdio.h int main() { int arr[10] {1,2,3,4,5,6,7,8,9,10}; printf(%d\n, arr[3]); // 输出4 printf(%d\n, arr[7]); // 输出8 return 0; }5. 一维数组遍历#include stdio.h int main() { int arr[10] {1,2,3,4,5,6,7,8,9,10}; int i 0; for(i 0; i 10; i) { printf(%d , arr[i]); } return 0; }6. 一维数组内存存储一维数组在内存中连续存放相邻元素地址差 元素类型所占字节数int 相差 4 字节7. sizeof 计算数组元素个数必背公式int sz sizeof(arr) / sizeof(arr[0]);sizeof(arr)数组总字节数sizeof(arr[0])单个元素字节数结果数组元素个数 三、二维数组进阶必备1. 二维数组本质以一维数组作为元素的数组可以理解为 “表格”。2. 二维数组创建数据类型 数组名[行数][列数];示例int arr[3][5]; // 3行5列的二维数组3. 二维数组初始化不完全初始化int arr[3][5] {1, 2};完全初始化int arr[3][5] {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};按行初始化更清晰int arr[3][5] {{1,2},{3,4},{5,6}};省略行数不能省略列数4. 二维数组使用行、列下标均从 0 开始访问格式数组名[行][列]printf(%d, arr[2][4]); // 访问第3行第5列元素5. 二维数组遍历双层循环#include stdio.h int main() { int arr[3][5] {1,2,3,4,5,2,3,4,5,6,3,4,5,6,7}; int i, j; // 遍历输出 for(i 0; i 3; i) { for(j 0; j 5; j) { printf(%d , arr[i][j]); } printf(\n); } return 0; }6. 二维数组内存存储二维数组在内存中也是连续存放行内连续、跨行也连续整体是一段连续内存空间⚙️ 四、C99 变长数组VLA1. 作用允许使用变量指定数组大小运行时确定长度更灵活。int n; scanf(%d, n); int arr[n]; // 变长数组2. 重要特点数组大小运行时确定不是 “可以变大”不能初始化VS 不支持GCC/Clang 支持 五、数组经典实战练习代码可直接运行练习 1字符从两端向中间汇聚#include stdio.h #include windows.h #include string.h int main() { char arr1[] welcome to bit...; char arr2[] #################; int left 0; int right strlen(arr1) - 1; while(left right) { Sleep(500); arr2[left] arr1[left]; arr2[right] arr1[right]; left; right--; printf(%s\n, arr2); } return 0; }练习 2二分查找折半查找#include stdio.h int main() { int arr[] {1,2,3,4,5,6,7,8,9,10}; int left 0; int right sizeof(arr)/sizeof(arr[0]) - 1; int key 7; // 要查找的数字 int mid, find 0; while(left right) { // 防止溢出写法 mid left (right - left) / 2; if(arr[mid] key) right mid - 1; else if(arr[mid] key) left mid 1; else { find 1; break; } } if(find) printf(找到了下标是%d\n, mid); else printf(找不到\n); return 0; }⚠️ 六、数组高频易错点总结数组下标从 0 开始严禁越界访问初始化项数不能大于数组定义大小二维数组可省略行不能省略列统一用sizeof(arr)/sizeof(arr[0])计算元素个数二分查找必须是有序数组变长数组不能初始化VS 环境不支持✅ 结语数组是 C 语言的基础中的基础掌握好数组的创建、访问、内存存储和常见用法对后续学习指针、函数、数据结构都至关重要。如果这篇文章对你有帮助欢迎点赞、收藏、关注后续会持续更新 C 语言干货