C语言数组初始化实战



数组空间的初始化


字符空间就是我们操作的最小空间,还有int类型,float类型,结构体类型的空间,这些类型的要求就没有字符空间的要求那么多。字符空间涉及到字符串的概念以及结束标志。我们接下来介绍的就是非字符空间。


字符空间:可以使用ASCII码解码的空间,我们可以看懂,使用%s查看,\0为结束标识符。


非字符空间:比如物联网中的数据采集,室内煤气安全,光照,温度检测等等,采集的数据都是以8位或者8位的倍数来存储的,这些数据没有正负号,也不是ASCII码。我们要存储这些数据,就需要使用unsigned char buf[10],我们可以使用字符串的strcpy将感温设备里面的数据直接拷贝出来吗?显然是不行的,因为感温设备里面的数据不是存储的字符串,没有结束标志,就会一直拷贝,这会导致内存泄漏的。


为了实现非字符空间的拷贝,C为我们提供了一个新的函数memcpy。


1.png


它具有三个参数,目的地址,源地址,拷贝字节。int类型占4个字节,所以下面拷贝的字节应该是40个字节。


2.png


这个memcpy看起来参数和strncpy是一样的,但是它们内部的实现机制是不一样的。如果我们采用的是strncpy,存储的数据中有\0这个结束字符,拷贝就会提前中断。注意:memcpy第三个参数传递的是字节数,不是类型的个数,标准写法应该是 个数*sizeof(类型);


字符空间和非字符空间都是我们将要考虑的,C语言的目的就是对资源进行操作,这些资源就是内存里面的数据。在以后的面试过程中,面试官给我们提出一些问题。首先我们先将题目中操作的对象找到,分辨它是一个字符类型还是非字符类型,其次再说怎么操作,比如加减乘除等等,面试也就是这个道理,大家也不要将它想象的太复杂。



【本文由麦子学院独家原创,转载请注明出处并保留原文链接】

logo
© 2012-2016 www.maiziedu.com
蜀ICP备13014270号-4 Version 5.0.0 release20160127

免费领取价值1888元求职宝典!

客服热线 400-862-8862

回到顶部