memset与数组初始化

今天在LeetCode刷题时,有一个bug找了一个下午。在vs2013能得到正确结果,但是在OJ上就是出问题。后面找了半天,才定位出错误并调试出来,发现原因与数组的初始化有关将一个int类型、长度为256的数组全部初始化为-1。当时理所当然的使用了:

int arr[256];

memset(arr,-1,256);

memset是以字节为单位移动指针进行初始化的。上面本质是将整型数据的四个字节都初始化为-1(0xff),初始化256个字节。

(以补码方式存放)

所以应该这样做memset(arr,-1,256*4) 或者memset(arr,0xff,sizeof(arr));

但是并不是通用方法,初始化为0或者-1可以这样做,但是初始化为-2就不可以这样做了。

一不小心就错了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值