C 语言数组定义 语法规则与初始化详解
C 语言数组就是相同数据类型元素的有序集合,在内存里面连续存放,数组定义的标准格式是 数据类型 数组名 [常量表达式],它是 C 语言循环排序 求平均值 字符串存储的核心基础知识点,也是大学课程选择题编程题高频考点。学习这个知识点的原因,是很多初学者容易混淆下标从 0 开始,常量表达式不能是普通变量,初始化方式还有越界访问这些易错点。整体结论就是数组必须提前指定元素个数,下标从 0 开始编号,支持定义同时初始化,也可以先定义后续赋值。
一 基础定义语法
标准格式
类型说明符 数组名 [元素个数];
举例
int a [10];
含义 定义 int 类型数组,数组名字是 a,一共包含 10 个整型元素,也就是 a [0] 到 a [9]
要点说明
1 数组名命名规则和变量一致,不能是关键字
2 方括号里面必须是常量或者常量表达式,C89 标准不允许写普通变量作为长度
3 下标从 0 开始,最大下标是元素个数减 1,10 个元素最大下标是 9
4 数组在内存是连续一块存储空间
二 数组初始化三种写法
1 全部初始化
int a [5] = {1,2,3,4,5};
定义的时候一次性给全部元素赋值
2 部分初始化
int a [5] = {1,2};
只给前两个元素赋值,剩下没有写的元素自动填充为 0
3 省略长度初始化
int a [] = {1,2,3,4};
方括号不写数字,编译器根据大括号里面元素数量自动计算数组长度,这里就是 4 个元素
三 二维数组定义
格式
类型 数组名 [行数][列数];
示例
int b [2][3];
代表 2 行 3 列,一共 6 个 int 元素
初始化示例
int b [2][3] = {{1,2,3},{4,5,6}};
四 字符数组定义(字符串常用)
char str [20];
专门用来存放字符,也就是字符串,注意字符串末尾要预留 \0 结束符位置
初始化示例
char str [] = "hello";
五 访问数组元素
通过下标访问,写法 数组名 [下标]
示例
a [0] = 10;
printf ("% d", a [3]);
六 易错点清单
1 下标越界,访问 a [10],数组只有 a [0] 到 a [9],越界会造成程序异常
2 方括号里面写变量,比如 int n=10; int a [n]; 这个是变长数组,属于 C99 扩展,传统教材考试一般不推荐
3 定义数组之后没有初始化,数组里面是随机垃圾值
4 混淆数组名,数组名代表数组首地址,不是普通变量,不能直接 a = 10 这种整体赋值
5 二维数组初始化的时候行列匹配错误
数组定义对照表
| 类型 | 定义示例 | 说明 |
|---|---|---|
| 一维整型数组 | int a[10] | 10 个 int 元素 |
| 一维字符数组 | char str[20] | 存放字符串 |
| 二维整型数组 | int b[2][3] | 2 行 3 列 |
| 省略长度数组 | int a[]={1,2,3} | 自动识别长度 |
【常见问题】
问题 1 c 语言数组定义里面,数组下标是从 1 开始吗
回答 1 c 语言数组定义核心考点,数组下标是从 0 开始,不是从 1 开始,元素个数是 n,最大下标是 n 减 1,是 c 语言数组定义选择题高频考点。
问题 2 c 语言数组定义,方括号里面可以写变量吗
回答 1 c 语言数组定义传统标准要求方括号里面必须是常量表达式,普通变量作为长度属于 C99 变长数组扩展,很多老教材考试不认可,是 c 语言数组定义容易混淆点。
问题 3 c 语言数组定义,如果只初始化前几个元素剩下元素是什么值
回答 1 c 语言数组定义部分初始化的时候,没有赋值的元素自动初始化为 0,这个是 c 语言数组定义初始化重要规则。
问题 4 c 语言数组定义之后能不能直接整体赋值
回答 1 c 语言数组定义之后不能直接用数组名整体赋值,只能通过下标逐个元素赋值,字符串可以使用 strcpy 函数复制,是 c 语言数组定义常见误区。
【免责申明】
本文基于标准 C 语言语法讲解数组定义,不同编译器对 C99 变长数组扩展支持有差异,考试答题以任课教材表述为准,代码仅用于学习参考。
相关阅读
-
大家常说的兔子牙主播,本名是朱容君,兔子牙是她的艺名,同时也是全网直播账号的昵称,她是国内较早一批音乐...浏览全文>>
-
dakar 中文译名为达喀尔,它本身并不是国家名称,而是塞内加尔这个国家的首都,很多人容易混淆,是因为知名的...浏览全文>>
-
上海健康医学院是上海市属公办应用型本科医学院,地处浦东张江国际医学园区,由三所有老牌医药专科底子的学校...浏览全文>>
-
核心结论就是数学里面字母 c 没有固定唯一含义,它属于通用代数字母,含义会跟着题目场景变化,最常见的用法...浏览全文>>
-
C 语言数组就是相同数据类型元素的有序集合,在内存里面连续存放,数组定义的标准格式是 数据类型 数组名 ...浏览全文>>
-
苹果手机虎牙充值,最稳妥、便宜的正规渠道是虎牙官网网页端或者电脑客户端充值,避开苹果 App 内购,苹果内...浏览全文>>
-
C 语言里面的 gets 函数本身并不会主动输出换行符,它的核心作用是读取一行输入,读取规则是遇到回车换行符...浏览全文>>
-
联想笔记本蓝牙主要分系统软件开关、键盘快捷键开关两种,部分老机型还有物理无线开关,台式机如果没有自带蓝...浏览全文>>
-
C 罗最新个人签名战靴属于耐克 CR7 签名产品线,该系列是耐克专门为 C 罗打造的专属签名足球鞋,命名体系...浏览全文>>
-
正规减肥中心短期确实可以让体重下降,但并不是所有人都能成功,而且很多减重主要是脱水、掉肌肉,并不是纯减...浏览全文>>
- cure 去角质凝胶身上能用吗 身体使用注意事项详解
- 牙签是可回收垃圾吗 垃圾分类科普解答
- 蓝牙耳机的佩戴方法 分清左右调整稳固防掉落
- 喝什么饮料比较健康 优先选择低糖无添加饮品
- 做梦梦到牙齿松动 梦境解析与生理原因
- consecutive 的讲解 词根词义搭配全解析
- 山药炖羊肉的做法 暖身家常炖制教程
- cf 英雄级人物买哪个好 角色选购推荐
- cdr 连筋字体怎么做 刻字连筋字制作教程
- cctv 台标进化史 央视台标版本演变介绍
- CAN 总线的检修方法 实操深度解析
- CAD 多段线合并
- c2c 的含义 电商商业模式详细解读
- blz51901016 断开连接 报错排查解决指南
- bilibili 网页版怎么调倍速 播放器操作详细指南
- bad 的副词怎么写怎么写 词性转换讲解
- B2B 电子商务的含义 商业模式深度解读
- au750 变黄了怎么清洗 详细处理教程
- antbang 无线路由器设置 路由器配置操作指南
- amd 闪龙处理器怎么样 产品详解介绍
