1.、memset()函数原型是extern void *memset(void *buffer, int c, int count)
buffer:为指针或是数组,
c:是赋给buffer的值,
count:是buffer的长度.
memset可以方便的清空一个结构类型的变量或数组。
Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;
例:
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));
下面的代码用数组做参数传递给标准函数memset(),以让其将数组设置成全0:
#include<mem.h>
void main()
{
int ia1[50];
int ia2[500];
memset(iai,0,50*sizeof(int));
memset(ia2,0,500*sizeof(int));
}
memset()的第一个实参是数组名,数组名作参数即数组作参数,它仅仅只是一个数组的起始地址而已。
在函数memset()栈区,从返回地址往上依次为第1,2,3个参数。第1个参数中的内容是main()函数中定义的数组ia1的起始地址。第2个参数是给数组设置的值(0),第3个参数是数组的长度(50*2)。函数返回时,main()函数的数组中内容全置为0。
2、bzero() 会将内存块(字符串)的前n个字节清零,其原型为:void bzero(void *s, int n);
s为内存(字符串)指针,
n 为需要清零的字节数。
bzero()会将参数s 所指的内存区域前n 个字节,全部设为零值。