本文共 1039 字,大约阅读时间需要 3 分钟。
1)void *memset(void *s,int c,size_t n) 总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。
2).memset() 函数常用于内存空间初始化。如: char str[100]; memset(str,0,100);
3).memset可以方便的清空一个结构类型的变量或数组。如: struct sample_struct{ char csName[16]; int iSeq; int iType; };
对于变量: struct sample_strcut stTest;
一般情况下,清空stTest的方法: stTest.csName[0]='/0'; stTest.iSeq=0; stTest.iType=0;
用memset就非常方便: memset(&stTest,0,sizeof(struct sample_struct));
如果是数组: struct sample_struct TEST[10]; 则 memset(TEST,0,sizeof(struct sample_struct)*10);
#include <mem.h> void* memset(void* s, int c, size_t n){ unsigned char* p = (unsigned char*) s;
while (n > 0) { *p++ = (unsigned char) c; --n; }
return s; }
============================
头文件:#include <string.h>
bzero() 会将内存块(字符串)的前n个字节清零,其原型为:
void bzero(void *s, int n);
【参数】s为内存(字符串)指针,n 为需要清零的字节数。
bzero()会将参数s 所指的内存区域前n 个字节,全部设为零值。
实际上,bzero(void *s, int n) 等价于 memset((void*)s, 0,size_tn),用来将内存块的前 n 个字节清零,但是 s 参数为指针,又很奇怪的位于 string.h 文件中,也可以用来清零字符串。
注意:bzero() 不是标准函数,没有在ANSI中定义,笔者在VC6.0和MinGW5下编译没通过;据称Linux下的GCC支持,不过笔者没有亲测。鉴于此,还是使用 memset() 替代吧。
转载地址:http://bglgi.baihongyu.com/