做网站接活犯法吗,抖音小程序代理,陕西金顶建设公司网站,微信小程序怎么申请注册到目前为止#xff0c;我们了解到C语言中可以使用整型#xff0c;浮点型和字符型的数据类型来描述我们人类世界的各种数据#xff0c;但是这些还远远不够……我们在IOT领域经常会遇到这样一个数据使用场景#xff1a;某天的固定时间内#xff0c;会有多台#xff08;我们…到目前为止我们了解到C语言中可以使用整型浮点型和字符型的数据类型来描述我们人类世界的各种数据但是这些还远远不够……我们在IOT领域经常会遇到这样一个数据使用场景某天的固定时间内会有多台我们假定100台IOT终端上报某种类型的信息我们假定是0-100°范围内的温度探测值。现在知道了基本的数据类型选择unsigned char类型存储一台终端上报的温度值就可以。但是如果这个设备是100台呢下面的定义方式貌似可行但是要是这个数量变得更多比如1000台的时候呢咱们肯定会问C语言中就没有一种类似容器一样的方案可以通过某种机制去查找到指定的存放位置从而节省定义数据需要的代码行数呢答案是有的而且这种C语言的数据类型就是我们前面曾经提到的-数组类型。【预备知识-索引】索引英文名index。通俗的讲就是容器内每个数据的位置标签。用户可以通过这些不同的位置标签找到对应位置存储的数据。索引0对应数据11索引3对应数据44。在C语言中所有的索引均从0开始计数逐次加1。【一维数组】以上面100台IOT设备上报温度值场景为例一维数组的定义方式如下注1数组长度100根据实际100个设备而定。索引值从0到99100-1共100个。注2数组内的成员称为数组元素为相同数据类型。在本例中都为unsigned char类型。数组元素的引用有了索引我们可以找到100台设备中任何一台设备的对应值。比如数组的初始化部分初始化unsigned char SensorTemp[100] {1,10,11,22}注 因为初始化值只有4个只能完成对索引0,1,2,3四个元素进行赋值逐个初始化SensorTemp[0] 1SensorTemp[1] 10SensorTemp[2] 11SensorTemp[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语言中的重头戏指针和指针数组我们还是往后放放这么早提指针还是容易有心理压力。其实对于数组只要记住第一数组就是个数据存储容器第二里面的元素都一样的数据类型第三不管一维还是高维拿索引检索就好。