关于memset

今天在写工程的时候遇到这样的问题:

1 long motorEcoderRates[100];

2 memset(motorEcoderRates, 111sizeof(motorEcoderRates));

 

 调试的时候发现motorEcoderRates的值并不是100,原来是自己对memset的理解不够深入

 

功能: s所指向的 某一块内存中的每个字节的内容全部设置为ch指定的ASCII值。即将指定的内存,以字节为单位,置为ch所代表的内存形式。块的大小由第三个参数指定,这个函 数通常为新申请的内存做初始化工作。

用法: void *memset(void *s, char ch, unsigned n);

原理:以 字节为单位复制内存的二进制形式,到指定的内存区域。

(注:第二个数字也可以是int型,然后截取该int变 量的最低字节。作为复制的二进制模板。所以第二个字节最常见的是0全部置零或 -1全部 置1。)

用途:memset最常见的用途是对struct做初始化工作 

 

所以,当数组类型不是char 且你初始化的是非零值时候,就会出问题,达不到你想要的效果。 

posted on 2012-04-12 09:18  sxzxcm  阅读(347)  评论(0编辑  收藏  举报

导航