当前位置: 首页 > news >正文

知识点总结:四:数组

1_数组的概念

数组是⼀组相同类型元素的集合,由此可知数组的元素数量要比0大,且都是相同的类型。

数组相当于在栈区申请一块连续的、大的(相较于其中的一个元素)内存空间,依照定义的数组的类型将这一块内存进行定义

1_一维数组的创建

一维数组的创建简单包括:

数组类型,自定义数组名,常量描述的元素数量

数组的初始化

数组的类型

数组也是有类型的,数组算是⼀种自定义类型,去掉数组名留下的就是数组的类型

例如

int [10] int [12] char [5] 就代表了数组的类型

3_数组的使用

上面是数组的元素,下面是它们对应的下标

“ [ ] ”是下标引用操作符,可以引用出数组中的元素

有了下标访问操作符,我们就可以轻松的访问到数组的元素了,比如我们访问下标为7的元素,我们就可以使用arr[7] ,想要访问下标是3的元素,就可以使用arr[3] ,如下代码

如果想要访问整个数组

使用for循环产生0~9的下标,用下标引用操作符操作数组每个元素的下标

for (int i = 0;i<10;i++)

{

printf("%d ", arr[i]);

}

//简易描述一下

给数组中的元素赋值也是一样的

4_数组在内存中的存储

从结果可以看出,数组中的每个元素是紧密相连在一起的,依次向高地址递增

5_计算数组元素数

像上图这样可以计算出整个数组的大小

之后再计算单个元素的大小

相除之后就可以得到数组的元素数量

6_二维数组

二维数组相当于把一维数组作为数组的元素,更高维数组同理

二维数组创建时可以省略行不能省略列,例如type arr_name[][n]; n就是不能省略的

二维数组的内存是低内存到高内存连续的,并不是为了便于理解而画图化成的具有长和宽的长方形

初始化

初始化可以不完全初始化,也可以利用大括号按照自己的想法初始化

比如 int [3][3] {{1}{}{2}}就是跳过了中间一行元素的初始化和第一行第二行的第二第三个元素的初始化

ps:如果想要跳过一行中中间或者开头的某个元素进行初始化,只有利用了C99的指定初始化器才能达到(或者自己从内存上进行操作)

二维数组的使用

引用或者初始化二维数组的原理和一维数组类似

先找到对应的行,再找到对应的列

如:arr[height][width]

同样利用循环可以访问整个二维数组

7_C99中的变长数组

变长数组并非指可以中途修改数组的大小,而是指可以用变量定义数组的大小

#include <stdio.h> int main() { int n = 0; scanf("%d", &n);//根据输入数值确定数组的大小 int arr[n]; int i = 0; for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } for (i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; }

但是vs2022没有实现C99中的变长数组,所以上图是在gcc编译器下实现的

http://www.cnnetsun.cn/news/136838.html

相关文章:

  • 关于Comtos Linux (朱雀)主体源码的选择
  • 超级Mini小车功能说明
  • STC32G12单片机替换成STC32F12单片机,直接替换的结果
  • SIEMENS 6SL3210-1PE33-0CL0 变频器
  • 软件测试常用的7种方法,最后一个是升职加薪关键!(零基础小白转行IT互联网高效进阶)
  • 【RTOS】EasyLog的移植与使用
  • 在数据库里玩“平行宇宙”:MatrixOne Data Branch 让数据也拥有Git 的分支/合并/对比/回滚(含跨集群同步)
  • 基于单片机的全自动洗衣机系统的设计
  • 5.6 模型部署与智能体集成实战
  • 基于单片机的球赛计分牌的设计
  • ArcGIS Pro 从入门到实战基础篇(10):地图菜单
  • Kotaemon与Redis/Memcached集成:构建高速缓存层
  • 【鸿蒙三方库编译】lycium_plusplus(lycium++)高效完成鸿蒙C/C++编译
  • 2025年度GEO服务商权威甄选指南:技术深度与商业价值的双重考量
  • 收藏备用!Java程序员转AI大模型:从技术沉淀到AI爆发的进阶之路
  • Python 爬虫实战:Session 会话维持爬取需登录内容
  • 基于移相全桥变换器的电池充电仿真模型,采用电压电流双闭环PI控制。 电池先经历CC模式而后进入...
  • 基于COMSOL模拟的水力压裂技术研究:固体力学与达西定理的应用
  • Redis 性能调优(二)
  • Doris 性能调优实践指南(可直接落地)
  • presum|二分try+滑窗cnt
  • Web自动化测试:Unittest单元测试框架
  • Apache2最佳实践
  • 实力派,也可以是偶像派
  • 基于单片机的多功能万年历
  • AI搜索时代:技术演进、产业分化与深度变革
  • SGMICRO圣邦微 SGM2019-2.5YC5G/TR SC70-5 线性稳压器(LDO)
  • 一文搞懂 低功耗蓝牙BLE 中的 ATT、GATT、MTU 与 20 字节限制
  • 别让“大锅饭”逼走你的Top Sales:揭秘薪酬误差的副作用
  • 27827828