定义:void *memset(void *s, int ch,
size_t n);
函数解释:将s指向的空间的前n个字节 (typedef unsigned int size_t)用 ch (这里是
ASCII值)替换并返回 s 。
大家来看个小程序:
int main()
{
int i;
memset(&i,'4',strlen(i));
printf("%d\n",i);
return 0;
int i;
memset(&i,'4',strlen(i));
printf("%d\n",i);
return 0;
}
看似是合理的。编译平台VC6.0
int类型占4个字节,在i所指向的内存中赋值。但是编译会出错,问题出在哪里??
memset不能给int,float.....类型赋值,只能给char类型的数据进行赋值。这就是问题所在。
int main()
{
char buffer1[]="I love china";
puts(buffer1);
memset(buffer1, 'a', strlen(buffer1));
puts(buffer1);
return 0;
}
{
char buffer1[]="I love china";
puts(buffer1);
memset(buffer1, 'a', strlen(buffer1));
puts(buffer1);
return 0;
}
运行结果
I love china
aaaaaaaaaaaa
memset(buffer1, 'a', 3);对buffer1中前三个字节赋值后面内容不变。