第九章——数组 第一节——一维数组的定义与初始化
数组
数组是C语言所提供的最简单的构造类型。每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元。
🎯 核心目标:掌握一维数组的定义规则、初始化方式及内存分配机制
一维数组的定义
🔧 基本语法与规则
1 | 类型名 数组名[整型常量表达式]; |
示例代码如下:
1 | int a[5]; |
- 定义三要素:
- 类型名(如
int,char) - 数组名(合法标识符,如
a,score) - 长度(常量表达式,如
5,N)
- 类型名(如
📦 内存分配规则
- 连续存储:数组元素在内存中占用连续空间
- 字节数计算:
数组长度 * sizeof(元素类型) - 地址特性:数组名是首地址常量,不可修改
🚫 常见错误与避坑指南
| 错误类型 | 错误代码示例 | 修复方法 |
|---|---|---|
| 变量定义长度 | int n=5; int a[n]; |
改为 int a[5]; |
| 越界访问 | a[5] = 10;(长度为5) |
确保下标范围 0到总长度-1,对于这个东西的个人理解就是超出范围了,数组是从0开始的,而我们习惯1开始 |
| 非整型下标 | float a[3.5]; |
下标必须为整型常量表达式 |
一维数组的初始化
✅ 初始化方式对比
| 初始化类型 | 语法示例 | 内存效果 |
|---|---|---|
| 完全初始化 | int a[5] = {1,2,3,4,5}; |
全部元素赋初值 |
| 部分初始化 | int a[5] = {1,2}; |
未显式初始化的元素默认为0 |
| 省略长度 | int a[] = {1,2,3}; |
编译器自动推导长度为3 |
| 静态数组默认值 | static int a[3]; |
默认初始化为0 |
🧠 关键点解析
- 默认值规则:未初始化的局部数组元素值为随机数,静态数组默认为0
- 长度省略技巧:
char c[] = {'a'};等价于char c[1] = {'a'}; - 错误案例:
int a[3] = {1,2,3,4};❌(初始值过多)
说明
- 数组不初始化,其元素值为随机数
- 对static数组元素不赋初值,系统自动赋0
- 部分元素赋初值,其余为0
- 全部元素赋初值,可以不指定长度
真题实战与调试技巧
🧪 真题1(2005年4月)
题目:以下能正确定义一维数组的选项是
A. int a[5]={0,1,2,3,4,5};
B. char a[]={'0','1','2','3','4','5'};
C. char a={'A','B','C'};
D. int a[5]="0123";
答案:B
解析:
- A选项初始值个数超过数组长度
- C选项缺少数组定义符号
[] - D选项字符串长度隐含+1(包含
\0),实际需长度为5
🧪 真题2(数组越界陷阱)
代码:
1 | int a[3] = {0}; |
答案:输出随机值或导致崩溃
解析:数组下标越界访问了未分配的内存
高级技巧与调试方法
🔍 调试技巧:观察数组内存布局
1 |
|
输出示例(小端序机器):
1 | a[0] 地址: 0061FF1C 值: 11223344 |
结论:数组元素连续存储,地址递增
🎯 总结口诀
1 | 数组定义三要素,连续存储按索引 |
- 标题: 第九章——数组 第一节——一维数组的定义与初始化
- 作者: 亓翎_Re-Tikara
- 创建于 : 2026-02-07 02:21:28
- 更新于 : 2026-02-07 02:26:19
- 链接: https://re-tikara.fun/Blog/posts/c960dd98/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。