头文件 c中 <string.h> c++中 <cstring>
void *memset(void *s, int ch, size_t n);
函数解释:将 s 中前 n 个字节用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
例:把 char a[20]清零 : memset(a,0,20); 把a的前20个字节用0替换并返回a!
memset(a,'0',20);
memset(a,'1',20);
memset函数也是以字节为单位进行赋值
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int a[5];
memset(a,1,5);//如果这里改成memset(a,1,5 *sizeof(int))也不可以,因为memset按字节赋值。
for(int i = 0;i < 5;i++)
cout<<a[i]<<" ";
system("pause");
return 0;
}
/*
这样写不行!!
如果用memset(a,1,20);(实际上与memset(a,1,5*sizeof(int))结果是一样的)
就是对a指向的内存的20个字节进行赋值,每个都用ASCⅡ为1的字符去填充,转为二进制后,1就是00000001,
占一个字节。一个INT元素是4字节,合一起就是00000001000000010000000100000001,就等于16843009,就完
成了对一个INT元素的赋值了
*/