memset起什么作用

来源:百度知道 编辑:UC知道 时间:2024/06/03 22:46:04
是不是memcpy都要用memset将
memset(void *,0,sizeof());

楼上两位大侠回答的都很好。
个人觉得,memset一般是用于初始化(清空)一个内存块,以防你新建一个变量等时系统分配给你一段含有用过的内存块。如果某君不小心不另外对其初始化就调用的话,可能会产生不可预料的错误。

碰到问题多到网上搜一下

memset

功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,
块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作
用 法: void *memset(void *s, char ch, unsigned n);
程序例:
#include <string.h>
#include <stdio.h>
#include <mem.h>
int main(void)
{
char buffer[] = "Hello world\n";
printf("Buffer before memset: %s\n", buffer);
memset(buffer, '*', strlen(buffer) - 1);
printf("Buffer after memset: %s\n", buffer);
return 0;
}

输出结果:
Buffer before memset: Hello world

Buffer after memset: ***********

memset是用第二个参数的值去填充第一个参数指向的内存块,
填充长度即为第三个参数.

而memcpy是把第二个参数的地址所指向的内存拷贝到第一个参数所指向的内存地址中,
长度也是第三个参数.

根据两个函数的涵义你可以知道
memcpy使用与memset完全可以独立.
两者并没有依赖关系.