memset内存填值的用法



memset定义为


void *memset(void *s,int c, size_t n),即将s地址开始的连续n个字节(Byte)以参数c填写,然后返回指向s的指针,对初始化数组非常方便。


头文件:#include<string.h>


使用及误区:


1、数组初始化0:


将数组char a[n]初始化为0::memset(a,0,n),正确。


将数组int a[n]初始化为0:memset(a,0,n),错误。


正确用法为memset(a,0,n*sizeof(int))。


!!注意memset是按字节来填写值,故不同类型数据要计算好占用字节数。


2、数组填写其他值:


将数组char a[n]填写1::memset(a,1,n),正确。


将数组int a[n]填写1::memset(a,1,n),错误。memset(a,1,n*sizeof(int)),也错误。


memset是按字节来填值,故第一次错误是未计算对数组的大小;第二次虽然计算对数组的大小,但由于memset是按字节来填值,故数组a中每个元素都被按字节填写了1,即每个元素的值被填写为0x01010101,并非我们想要的0x00000001。


!!注意所以用memset对非字符型数组赋初值是不可取的! 可用for循环进行非字符数组赋初值。


原文:http://hi.baidu.com/jianghuzhijian/blog/item/27828cc445c21bc0d0006009.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值