C语⾔memset函数使⽤⽅法详解
C语⾔memset函数使⽤⽅法详解
⼀。函数原形  void *  memset(void*s, int ch,size_t n)
memset结构体初始化⼆。函数作⽤将以s内存地址为⾸的连续n个字节的内容置成ch,⼀般⽤来对⼤量结构体和数组进⾏清零
三。常见错误
1.搞反了 ch 和 n的位置
对char[20]清零,⼀定是 memset(a,0,20);
2.过度使⽤memset
3.其实这个错误严格来讲不能算⽤错memset,但是它经常在使⽤memset的场合出现
int fun(strucy something * a)
{
.
....
memset(a,0,sizeof(a));
.....
}
这⾥错误的原因是VC函数传参过程中的指针降级,导致sizeof(a),返回的是⼀个 something*指针类型⼤⼩的的字节数,如果是32位,就是4字节。经常使⽤这种形式
memset(a,0,n*sizeof(type));
4.想对数组初始化为1
int main()
{
int a[20];
memset(a,1,20);
}
这种⽅法不能初始化为1。原因是memset函数是按照字节赋值的,int 是4个字节所以为0x01010101,就是⼗进制的16843009。
如有疑问请留⾔或者到本站社区交流讨论,感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!