news 2026/10/13 6:19:12

C语言数组核心知识点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言数组核心知识点

C语言数组是固定长度、同类型元素的连续内存存储结构,一旦定义长度不可修改,元素类型必须统一,索引从0开始,是C语言最基础的存储结构之一。

一、定义规则

格式为「数据类型 数组名[数组长度]」,长度必须是常量,不能用变量定义,例:int arr[5]、char str[10]、float sc[3]。

二、三种初始化方式

  1. 完全初始化:指定所有元素,未指定的位置不会留空,例:int arr1[5]={1,2,3,4,5};

  2. 部分初始化:未指定的元素自动赋值为0,例:int arr2[5]={1,2},剩余三个元素均为0;

  3. 省略长度:编译器根据初始化元素个数自动确定长度,例:int arr3[]={10,20,30},长度为3。
    字符数组特殊初始化:用双引号初始化会自动加字符串结束标志’\0’,例:char str1[]=“hello”,长度为6;用大括号逐个初始化无’\0’,例:char str2[]={‘h’,‘e’,‘l’,‘l’,‘o’},长度为5。

三、元素访问与遍历

  1. 访问格式:数组名[索引],索引范围0到「长度-1」,例:arr[0]是第一个元素,arr[4]是长度为5的数组的最后一个元素,严禁越界访问,否则会读取垃圾内存导致程序异常;

  2. 计算长度技巧:用sizeof(数组名)/sizeof(数组名[0]),总字节数除以单个元素字节数,避免硬编码长度;

  3. 遍历方式:常用for循环按索引遍历,也可通过指针遍历,数组名本质是首元素地址,*(指针+i)等价于数组名[i]。

四、二维数组
二维数组的打印和输入

可理解为“数组的数组”,类似表格,有行和列,定义格式「数据类型 数组名[行数][列数]」,例:int arr[2][3]代表2行3列的二维数组;
初始化可按行大括号嵌套,也可直接按顺序初始化,未指定元素自动为0,例:int arr[2][3]={{1,2},{3}},剩余元素均为0;
访问格式「数组名[行索引][列索引]」,行和列索引均从0开始,遍历需双层for循环,外层遍历行,内层遍历列。

五、数组传参特点

C语言中数组传参不会传递整个数组,只会传递首元素的地址,形参写「数组名[]」或「指针」效果一致;
传参后在函数内用sizeof无法获取原数组总长度,需单独将数组长度作为参数传入函数。

六、核心注意事项

  1. 长度固定,定义后无法扩容或缩容;

  2. 索引从0开始,越界访问是常见错误,编译器不会报错但运行会出问题;

  3. 字符数组要区分是否有’\0’,无’\0’的字符数组不能用字符串处理函数(如strlen、printf(“%s”));

  4. 数组名是常量地址,不能直接赋值,例:arr={1,2,3}是错误写法,只能逐个修改元素。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/13 6:17:48

Upscayl 免费 AI 图像放大教程:从安装到 4 倍放大的完整流程

Upscayl 免费 AI 图像放大教程:从安装到 4 倍放大的完整流程 【免费下载链接】upscayl 🆙 Upscayl - #1 Free and Open Source AI Image Upscaler for Linux, MacOS and Windows. 项目地址: https://gitcode.com/GitHub_Trending/up/upscayl Upsc…

作者头像 李华
网站建设 2026/10/13 6:16:31

Redis Hash底层原理与实战:listpack、渐进式rehash及避坑指南

如果让我在 Redis 的所有数据类型里挑一个“最值回票价”的,我大概率会把票投给 Hash。String 是面子,十个键里八个是它;Hash 才是里子,真正做对象缓存、购物车、计数器聚合、分布式锁的可重入逻辑时,你根本绕不开。尤…

作者头像 李华
网站建设 2026/10/13 6:15:25

ECharts双轴组合图实战:柱状图与折线图混合配置及避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华