学C语言的朋友都知道数组是绕不开的核心知识点也是后续学结构体、链表的基础。很多新手刚接触时被一维、二维、字符数组搞得晕头转向连冒泡排序、选择排序的逻辑都理不清。今天这篇文章把C语言数组的核心知识点全讲透从基础概念到实际代码从经典算法到避坑技巧全程通俗讲解零基础也能轻松看懂收藏起来慢慢学一、一维数组基础中的基础先吃透这几点数组本质就是存相同类型、有序数据的连续内存容器一维数组是最基础的形式所有操作都围绕下标展开核心知识点就这几个1. 定义与内存分配定义格式数据类型 数组名数组长度;比如int a;就是定义一个能存10个整数的数组。数组总内存单个元素字节×长度比如int型占4字节int a就占40字节用sizeof能快速计算核心公式数组长度 sizeof(数组名)/sizeof(数组名)写代码必用2. 初始化的3个实用技巧数组定义时赋值就是初始化未赋值的元素会自动置0这3个技巧直接记全初始化可省长度int a{1,2,3}系统自动定长度3部分初始化超方便int a{0,1,2}剩余7个元素全为0快速置0所有元素int a{0}开发中常用的小技巧。3. 核心注意下标从0开始C语言数组只能逐个引用元素不能整体操作下标从0开始最后一个元素下标是长度-1比如int a元素是a到a越界会出问题4. C99变长数组灵活定义长度C99新增的变长数组允许用变量定长度比如int len5; int a;但注意创建后长度不能改且定义时不能初始化需后续循环赋值。二、二维数组数组里套数组处理表格数据超合适实际开发中存学生各科成绩、矩阵这些表格类数据一维数组就不够用了二维数组就是**“数组中的数组”**理解成行和列的矩阵就行关键知识点就2个核心1. 定义与存储规则定义格式数据类型 数组名;比如int stu存10个学生的3科成绩。别看逻辑上是行和列物理内存里还是连续的按行存储先存第一行所有元素再存第二行依次类推。2. 初始化铁律列长度绝对不能省二维数组初始化分分行和线性两种怎么写都可以但列长度必须指定行长度可省略系统会自动计算正确写法int a{1,2,3,4,5,6}系统自动定2行错误写法int a{1,2,3}直接编译报错新手别踩坑引用元素也简单数组名行下标列下标比如stu就是第二个学生的第二科成绩。三、字符串与字符数组C语言的特殊存在核心记牢\0重点提醒C语言没有专门的字符串类型所有字符串都靠字符数组存储这部分的核心就是记牢字符串结束符\0少了它必出问题1. \0的关键作用字符串常量比如hello在内存中末尾会自动加\0ASCII码为0它是C语言识别字符串结束的唯一标志不计入字符串长度但占数组位置。比如存hello字符数组长度至少要6留一个位置给\0否则输出时会出现随机的“垃圾值”。2. 初始化与输入输出字符数组初始化有两种方式推荐用字符串常量更简洁末尾会自动补\0逐个赋值char ch{h,e,l,l,o,\0};字符串常量char chhello;推荐输入输出不用循环直接用%s比如printf(%s, ch);、scanf(%s, ch);注意scanf输入时数组名不用加遇到空格会停止输入。如果想输入带空格的字符串用scanf(%, ch)或fgets(ch, 长度, stdin)就行后者更安全。四、数组经典算法冒泡排序选择排序笔试高频考点学会数组必然要会排序冒泡排序和选择排序是C语言最基础、最常考的排序算法适合小规模数据核心逻辑简单代码直接套用就行1. 冒泡排序相邻比较让最值“浮”到末尾核心思想重复遍历数组两两比较相邻元素顺序错了就交换每一轮遍历都会把未排序部分的最大值放到末尾总共遍历长度-1轮。简单说就是让大的数一步步“浮”到数组最后代码直接复制就能运行升序排序改个符号就能变降序。2. 选择排序找最值放到已排序区末尾核心思想把数组分成已排序和未排序区每一轮从无序列表找最小值和未排序区第一个元素交换逐步扩大已排序区同样遍历长度-1轮。相比冒泡排序选择排序的交换次数更少逻辑也更直观新手更容易理解。五、避坑必看数组使用的7个高频错误别再踩C语言对数组不做越界检查新手稍不注意就会导致程序崩溃这7个坑点务必记牢避免踩雷下标越界始终记住下标从0开始最后一个元素是长度-1二维数组省列长度列长度必须写行长度可省别搞反字符数组没留\0位置存字符串的数组长度要比实际字符串大1scanf输入字符串加数组名本身是地址不用加取地址符未初始化数组直接用未赋值的数组元素是随机垃圾值用了会出错误结果变长数组定义时初始化变长数组只能后续赋值定义时不能初始化数组名直接赋值数组名是常量地址不能用ab;给两个数组赋值。六、课后小练习学完就练巩固知识点光看没用动手敲代码才是关键这5个小练习覆盖数组所有核心知识点学完直接练实现一维数组的逆序输出用数组存储斐波那契数列前20项并打印输入10个学生成绩校验0~100范围计算总成绩和平均分用二维数组打印杨辉三角前10行定义二维字符数组统计每个字符出现的次数。总结C语言数组其实并不难核心就是抓住**“相同类型、连续内存、下标操作”**这三个点一维数组打基础记牢初始化和长度计算公式二维数组理解“行和列”记住列长度不能省字符数组核心是\0字符串输入输出用%s冒泡和选择排序吃透核心思想代码直接套用。数组是C语言的基础也是后续学习复杂数据结构的铺垫建议大家结合代码示例反复敲把每个知识点吃透避坑点记牢以后写代码会轻松很多。最后你学C语言数组时遇到过哪些难题评论区说说你的经历