首页 >> 学识问答 >

C 语言数组定义 语法规则与初始化详解

2026-11-05 09:09:15 来源:网易 用户:伊燕妍 

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 变长数组扩展支持有差异,考试答题以任课教材表述为准,代码仅用于学习参考。

 

相关阅读

最新文章