关于memset
今天在写工程的时候遇到这样的问题:
1 long motorEcoderRates[100];
2 memset(motorEcoderRates, 111, sizeof(motorEcoderRates));
调试的时候发现motorEcoderRates的值并不是100,原来是自己对memset的理解不够深入
功能: 将s所指向的 某一块内存中的每个字节的内容全部设置为ch指定的ASCII值。即将指定的内存,以字节为单位,置为ch所代表的内存形式。块的大小由第三个参数指定,这个函 数通常为新申请的内存做初始化工作。
用法: void *memset(void *s, char ch, unsigned n);
原理:以 字节为单位复制内存的二进制形式,到指定的内存区域。
(注:第二个数字也可以是int型,然后截取该int变 量的最低字节。作为复制的二进制模板。所以第二个字节最常见的是0全部置零或 -1全部 置1。)
用途:memset最常见的用途是对struct做初始化工作
所以,当数组类型不是char 且你初始化的是非零值时候,就会出问题,达不到你想要的效果。