news 2026/10/30 4:55:40

C语言——数组

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言——数组

一、数组的概念:

数组其实就是一类相同的元素的集合:从这个概念我们就可以发现两个有价值的信息:

a、数组中存放的是一个或者多个元素,但是数组元素的个数不可以是0

在标准的C语言中这个不是合法的普通数组的定义,因为这里表示的是这个数组中一个元素都没有

而数组本身就是“用来存放一组同类型元素的连续空间”,所以普通数组至少应该存放一个元素

b、数组中存放很多数据,多维数字一般比较多见的是二维数组。

二、一维数组的创建:

下面这张图就是一维数组的基本格式:

后面的就是数组的名字,这是可以自己命名的,[]中的常量是用来指定数组的大小的,这个数组的大小是可以根据实际的情况进行指定的。

三、数组的初始化:

有的时候数组在创建的时候需要一些初始化,那么数组是如何进行初始化的,数组的初始化一般使用的是大括号,将数组放在大括号中:

四、数组的类型:

这里我们只需要知道:去掉数组的名字,剩下的就是数组的类型。

五、一维数组的使用:

C语言规定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后一个元素的下标为n-1,下标就相当于数组元素的编号。

数组是通过下标访问到具体的数据的,下标也称之为索引。

注意:数组名是地址,但是数组元素不是,所以在输入数组元素的时候需要加上取地址符号。

字符数组存放多个字符的时候,如果末尾有/0,就可以当做是字符串。

注意:这里并没有'\0',而是数组为我们加上了'\0',关键就在于arr的大小显示的是10,而初始化中只给出了4个字符,C标准规定:当大括号初始化列表中元素的大小小于数组中元素的个数的时候,剩余部分隐式的按照“具有静态存储对象”规定初始化,也就是全部置为0。而对于char而言,这个0就是\0。

当我们对数组进行初始化的时候,大小是可以省略的,大小是根据数组的实际内容进行分析。

结论:一维数组中的所有元素在内存中是连续一次存放的,随着下标的增长地址也是逐渐的增大的

六、sizeof计算元素的个数:

下面就是sizeof计算元素个数的简单运用:

七、二维数组的创建:

(1)概念:前面学习的数组叫做一维数组,数组的元素都是有内置类型的,如果我们将一维数组作为数组的元素,这时候就是二维数组,二维数组作为数组元素的数组叫做三维数组,二维数组以上的数组统称为多维数组。

二维数组的定义如下:

(2)二维数组的初始化:

通过上述的这种方式我们就可以直观的看到里面的每一个元素是如何进行存放的

注意:我们之前有提到一维数组是可以不写大小的,但是对于二维数组而言,行是可以省略的,但是列是不可以省略的。

(3)二维数组的存储:

从输出的结果可以看出,每一行的两个元素都是相邻的,地址之间相差4个字节,跨行位置处的连个字符也是相差4个字节,所以二维数组中的每一个元素都是连续存放的。

这里有一个问题:我们是否可以使用变量定义二维数组?

在C99之前,数组的大小可以通过常量或者常量表达式指定,在C99标准之后,引入了一个变长数组的概念,允许我们使用变量指定数组的大小

变长数组的基本特征:数组的长只有在运行的时候才可以确定,所以变长数组不可以进行初始化,它的好处就是程序员不需要再开发的时候,随意的为数组指定一个估计的长度,程序可以运行的时候为数组分配精确的长度。

但是我们需要注意的是vs默认是不支持变长数组的,所以此时我们就需要使用clang作为底层的编译器。

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

Windows server 2019 AD备域搭建

在Windows server 2019 AD备域搭建 设置备域服务器。 设置固定IP地址 修改AD备域服务器的名称 重复:Windows server 2019 AD域控搭建,的《打开服务器管理器》部分Windows server 2019 AD域控搭建_域控服务器安装步骤-CSDN博客 点击图标&#xff0c…

作者头像 李华
网站建设 2026/10/30 4:52:40

小白程序员快速入门大模型:从Token到Workspace Agent全解析

本文梳理了AI领域近年来的核心概念演变,从Token和Context Window的基础认知,到Prompt Engineering的任务描述,再到RAG的资料检索、Tool Calling的工具调用、MCP的协议整合,深入浅出地解析了Context Engineering的信息流设计、Skil…

作者头像 李华
网站建设 2026/10/30 4:52:20

AI Shell——依托自然语言实现华为云资源编排与应用自动化部署

1. 注册登录AI 开发者空间 登录注册AI 开发者空间,根据实际需求选择体验版/持久化版,然后点「立即进入」。 勾选服务协议和AK/SK授权,然后点「进入」。 2. 对话AI Shell,规划ECS部署 进入AI 开发者空间 - 体验中心,左…

作者头像 李华
网站建设 2026/10/30 4:51:46

一次 redis 幽灵内存的分析

一、背景 业务使用的 Redis 由主从切换到了 Cluster 后,Redis 出现了诡异的内存上涨。 二、排查路径 1.查看 info 查看 info 观测内存使用就是很高且碎片率很低,而且 key 的数量很少 info memory2.查看真实数据大小 用 rob 等工具分析真实大小,详见…

作者头像 李华
网站建设 2026/10/30 4:47:12

力扣543二叉树的直径(深度优先搜索法(递归))

543. 二叉树的直径 - 力扣(LeetCode) 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 即求路径经过节点数最大值 - 1 假设我们已知某节点左儿子向下遍历经过最多节点数L、右儿子向下遍历经过最…

作者头像 李华