先看看帮助文档上的介绍以及实例:
Sets buffers to a specified character.
void *memset( void* dest, int c, size_t count );
Parameters
-
dest
- Pointer to destination. 目标指针 c
- Character to set. ascii 字符 count
- Number of characters. 字节数
Example
/* MEMSET.C: This program uses memset to * set the first four characters of buffer to "*". */ #include <memory.h> #include <stdio.h> void main( void ) { char buffer[] = "This is a test of the memset function"; printf( "Before: %s\n", buffer ); memset( buffer, '*', 4 ); printf( "After: %s\n", buffer ); }
Output
Before: This is a test of the memset function After: **** is a test of the memset function
在上面的例子中,字符数组buffer 的前四个字符被替换为‘*’,可见memset函数的做表面作用就是字符替换。
有一个比较好的功能描述:将指定的内存块中的每个字节的内容设置成指定的ACSII字符
memset 最常见的功能就是为新申请的内存做初始化,
比如在C++中:
char buff[100];
memset(buff,0,sizeof(buff));
或者 memset(buff,'/0',100)
或者 memset(buff,' ',sizeof(char)*100)
操作结构也是一样的
structsample_struct
{
char csName[16];
int iSeq;
int iType;
} ;
对于变量
struct sample_strcut stTest
用memset就非常方便:
memset(&stTest,0,sizeof(struct sample_struct));
如果是数组:
struct sample_struct TEST[10];
则
memset(TEST,0,sizeof(struct sample_struct)*10);