到目前为止,我们了解到C语言中可以使用整型,浮点型和字符型的数据类型来描述我们人类世界的各种数据,但是这些还远远不够……

我们在IOT领域经常会遇到这样一个数据使用场景:某天的固定时间内,会有多台(我们假定100台)IOT终端上报某种类型的信息(我们假定是0-100°范围内的温度探测值)。现在知道了基本的数据类型,选择unsigned char类型存储一台终端上报的温度值就可以。但是如果这个设备是100台呢?下面的定义方式貌似可行:

但是要是这个数量变得更多,比如1000台的时候呢?咱们肯定会问,C语言中就没有一种类似容器一样的方案,可以通过某种机制去查找到指定的存放位置,从而节省定义数据需要的代码行数呢?答案是有的,而且这种C语言的数据类型就是我们前面曾经提到的-数组类型

预备知识-索引

索引,英文名index。通俗的讲,就是容器内每个数据的位置标签。用户可以通过这些不同的位置标签,找到对应位置存储的数据。

索引0对应数据11,索引3对应数据44。在C语言中,所有的索引均从0开始计数,逐次加1。

一维数组

以上面100台IOT设备上报温度值场景为例,一维数组的定义方式如下:

  1. 注1:数组长度100根据实际100个设备而定。索引值从0到99(100-1)共100个。
  2. 注2:数组内的成员称为数组元素,为相同数据类型。在本例中都为unsigned char类型。

数组元素的引用

有了索引,我们可以找到100台设备中任何一台设备的对应值。比如:

数组的初始化

  • 部分初始化

unsigned char SensorTemp[100] = {1,10,11,22};

注: 因为初始化值只有4个,只能完成对索引0,1,2,3四个元素进行赋值

  • 逐个初始化

SensorTemp[0] = 1;

SensorTemp[1] = 10;

SensorTemp[2] = 11;

SensorTemp[4] = 22;

  • 全部初始化

unsigned char SensorTemp[4] = {1,10,11,22};

如果出现如下未给定数组长度情况,则认为数组SensorTemp的长度为给定数据的个数:

unsigned char SensorTemp[ ] = {1,10,11,22,33};

二维数组

解决了100台设备数据存储的问题,我们再提一个新的问题:如果需要我们上午和下午各存储一次,如何实现呢?

“再创建一个新的100个元素的数组不就解决了嘛”,很多朋友可能会提出这样的方案。没错,但是当每天的采集点很多呢,难道还要继续这样做么?

其实不需要的。C语言在数组的维度上进行了扩展,即可以定义高维度数组。对于该问题,我们可以考虑将01-06的采样时间点作为一个新的维度,重新定义一个二维的数组来解决这个新的问题。

具体这个二维数组里,数据的存放和二维数组中各个数据元素的含义如下图所示:

具体来看,二维数组的元素引用方式依然采用索引方式,只不过这次是两个索引值。对于二维数组,可以将它想象成为一个矩阵形式,矩阵的行数由第一维长度决定,矩阵的列数由第二维长度决定。同样,二维矩阵的初始化与一维矩阵类似,不再详述。

字符数组和字符串

上面的例子中,我们存储的都是具体的整型数据,但是往往在生活中,存储的数据也不乏字符串。比如经典的“Hello world”。有人会说,那我一个char一个char的输出不是也可以么?当然可以!但是,与本章中提出的第一个问题类似,当字符越来越多的时候,你还考虑一个char一个char的打印么?

既然整型都可以使用数组技术,那么字符型呢?答案是肯定的。

  • :我们需要重点关注最后的0字符。
  • 这个字符占用数组元素一个索引计数
  • 这个字符要么初始化的时候主动赋值,要么系统添加,所以一定要注意定义的字符数组长度
  • 这个字符的作用:C语言中,认定该字符为字符串结束的标志

后记

C语言中的重头戏,指针和指针数组,我们还是往后放放,这么早提指针,还是容易有心理压力。

其实对于数组,只要记住:第一,数组就是个数据存储容器;第二,里面的元素都一样的数据类型;第三,不管一维还是高维,拿索引检索就好

定义整型数组_C语言基础-数组怎么用相关推荐

  1. c int转char数组_C语言 指向数组和字符串的指针

    实例1 我们在pointer_test.c的文件中写一个test2()函数,我们定义一个有3个元素的字符数组初始化值分别为,'A', 'B', 'C',然后定义一个字符指针pc,把数组ca的首地址复制 ...

  2. c定义一个整型数组_C语言学习|数组

    一.数组的定义 数组:由若干类型相同的相关数据项按顺序存储在一起形成的一组同类型有序数组的集合 元素:用一个统一的名字标识这组数据,这个名字称为数据名,构成数据的每一个数据项 下标:从0开始的整数,遵 ...

  3. c语言向自定数组_C语言一维数组的定义和引用

    C语言一维数组的定义和引用 C语言支持一维数组和多维数组.如果一个数组的所有元素都不是数组,那么该数组称为一维数组. 一维数组的定义方式 在C语言中使用数组必须先进行定义.一维数组的定义方式为: 类型 ...

  4. 一维数组c语言,c语言一维数组_C语言一维数组入门教程

    摘要 腾兴网为您分享:C语言一维数组入门教程,优衣库,小米手环,小米钱包,小度等软件知识,以及胎教宝典,一级建造师题库软件,康佳渠道,刷点卷,一加系统,音乐节拍器,liveuc视频会议,辽宁省政务服务 ...

  5. Java语言基础(数组)

    Java语言基础(数组概述和定义格式说明) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数 ...

  6. char二维数组_C语言指针与数组详解

    指针与数组 指针可以与变量结合,也可以与数组结合使用.指针数组和数组指针是两个截然不同的概念,指针数组是一种数组,该数组存放的是一组变量的地址.数组指针是一个指针,表示该指针是指向数组的指针. 1.指 ...

  7. python定义字符串数组初始化_字符数组及其定义和初始化,C语言字符数组详解...

    字符数组及其定义和初始化,C语言字符数组详解 字符串的存储方式有字符数组和字符指针,我们先来看看字符数组. 因为字符串是由多个字符组成的序列,所以要想存储一个字符串,可以先把它拆成一个个字符,然后分别 ...

  8. C语言输出长长整型错误,c语言长整型定义

    我用long int怎么不行呢 基本定义形式为: long var_name = INIT_VALUE; 一. 长整型在C语言中类型关键字为long. 定义时,var_name为变量名. INIT_V ...

  9. c语言 头文件定义数组,C语言动态数组

    动态数组是指在声明时没有确定数组大小的数组,即忽略方括号中的下标:当要用它时,可随时用ReDim语句(C语言中用malloc语句)重新指出数组的大小. 中文名 C语言动态数组 释    义 相对于静态 ...

最新文章

  1. python requests模块_Python 爬虫教程 requests 模块
  2. MVC4 学习笔记01
  3. SAP UI5 scroll down to get more
  4. 前端异步对象的原理与使用方法
  5. Mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围
  6. eclipse中简单实现自己的工具类打包成jar包并在项目中使用
  7. Android sqlite数据库操作通用框架AHibernate(一)-CRUD示例和使用步骤
  8. Wannafly挑战赛25 A.因子
  9. iconpath 微信小程序_微信小程序 底部导航栏
  10. 泛函分析 04.02 有界线性算子 - 有界线性算子空间的收敛与完备性
  11. python八皇后问题递归算法_八皇后问题--递归回溯算法(Python实现)
  12. 龙渊无限法则服务器,龙渊大陆无限法则
  13. Flink集成Hudi实践
  14. 【教程】手机远程连接另一台手机的termux进行拍照
  15. 反向寻车管理系统服务器,一种反向寻车系统及寻车方法
  16. 如何访问原来Vue2官网?
  17. gethostbyname linux,gethostbyname()
  18. 2/8法则系列 | 你真的了解二八法则吗?
  19. python心理学实验程序_心理学实验设计程序软件除了 DMDX,E-prime,还有哪些?
  20. 宝塔实测-PHP网页版在线客服系统源码

热门文章

  1. Error: docker-ce conflicts with 2:docker-1.13.1-208.git7d71120.el7_9.x86_64
  2. (进阶篇)Redis6.2.0 集群 哨兵模式_哨兵工作原理_02
  3. (进阶篇)Redis6.2.0 集群 主从复制_搭建_01
  4. 安装和使用Ant Design Vue 图标库
  5. Git Flow工作流图
  6. Spring Schema整合Quartz_01
  7. Linux Shell脚本_设置最大打开文件数
  8. (需求实战_进阶_01)SSM集成RabbitMQ 关键代码讲解、开发、测试
  9. form表单提交,后台实体类接收转义问题
  10. HTTP系列学习(笔记一):一文带你详解HTTP协议