智能小车3:技术用到九寨沟去

     请先原谅我的标题,本文还是讲技术的。本来我是想和以前一样介绍arduino技术。但昨天的地震和我最近遇到的一些事,让我感觉到人的渺小,在大自然、宇宙、行驶的汽车面前,人就是只蚂蚁。但人不同于蚂蚁,人有梦想。我的梦想就是从计算机这个角度来理解世界,为世界做一些事。比如利用arduino技术制作一个小车,去探测倒塌的房屋。
      但我还是一脚踏实地,一步一步的学习技术,实现各种功能,最后才能用技术实现上面的愿望。下面还是要进入枯燥的技术知识,我分享一下关于arduino、c、java中的字符串的区别。
在说String以前,先看一下arduino的基本类型。这里还是引用一下官方文档https://www.arduino.cc/en/Reference/HomePage

     通过c语言的sizeof能得到各类型的字节大小。
类型 字节长度
void 1
boolean 1
char 1
unsigned char 1
byte 1
int 2
unsigned int 2
word 2
long 4
unsigned long 4
short 2
float 4
double 4
string - char array 字符数组
String - object 6
array 数组






    从上面可以看出arduino即有string也有String,那我们用那个呢?
     Arduino的内置String数据类型比C字符数组更容易使用,但这是通过在String代码库里实现的,这将导致需要从Arduino获得更多的资源需求(从上图也可看出它需要的字节数最多,6个)。从本质上说,更容易出问题。
String数据类型这所以如此灵活,因为它使用动态内存分配。也就是说,当你创建或修改一个String,arduino会从c库请求新的存储空间,并且String使用完毕时,Arduino需要回收空间。

     可以写一个程序,不停的给String加值,观察其内存的变化。


    可以看到, 可用内存不断减少,最后内存泄漏,变量s没有值了。这就是arduino的String.而c语言中没有String,只有char [],这个大小可以自己控制。java中的String其实与c、arduino没有什么比较的意义。
因为它经过jdk的封装,不用考虑释放的问题,当然一直加最终也会抛出out of memory异常。

     其它的数据类型我不多讲了,网上有很多教程,也可联系我,我发给你。
文/程忠 浏览次数:0次   2017-08-09 13:21:14

相关阅读


评论: