Memset()函数

1
2
memset(void *p,int,size_t)
//p:赋值的空间首地址,int所要赋的值,size_t要赋值的空间大小

需要注意的是,memset()的赋值是以一个字节,一个字节的方式进行操作,一般是用于char数组(char占用一个字节的内存空间)赋初始值,如果是用于int等(数据类型占用超过一个字节的)数组,则可能会出现错误.

对char数组赋值

1
2
3
4
5
6
char ch[4];
memset(ch,'a',sizeof(char)*4);
for(int i=0;i<4;i++){
cout<<ch[i]<<" ";
}
cout<<endl;

结果

1
2
a a a a
Press any key to continue

对int数组赋值

若对int数组所赋的值为0,则不会出错

1
2
3
4
5
6
int arr[4];
memset(arr,0,sizeof(int)*4);
for(int i=0;i<4;i++){
cout<<arr[i]<<" ";
}
cout<<endl;

结果

1
2
0 0 0 0
Press any key to continue

由于sizeof(int)的值为4,于是memset函数实际上是将以arr为首的连续空间(空间长度为16个字节)里的每个字节赋值为0
如果执行下面这条语句

1
memset(arr,1,sizeof(int)*4);

则arr[0] 的内存的储存的值的二进制形式是

1
0000 0001 0000 0001 0000 0001 0000 0001

所以arr[0]的值为16843009,并不为1

本文标题:Memset()函数

文章作者:定。

发布时间:2017年4月21日 - 01时04分

本文字数:979字

原始链接:http://cocofe.cn/2017/04/21/memset()函数/

许可协议: Attribution-NonCommercial 4.0

转载请保留以上信息。