1.使用原理
先来看看C标准库里面memset的源码
void *(memset)(void *s, int c, size_t n)
{
const unsigned char uc = c;
unsigned char *su;
for (su = s; 0 < n; ++su, --n)
*su = uc;
return (s);
}
可以看出,这个函数本身是为字符数组设计的,这也是为什么你调用memset需要包含cstring头文件的原因。
观察源码可以得出,c的值每次都会赋给一个字节,而不是一次性赋给四个字节,而int是四个字节,所以每次c的值都只会赋值给最低位的字节的内容。
举个例子:
如果你写memset(a,1,sizeof(int)