浅谈C++中memset函数的用法

浅谈C++中memset函数的用法

 

memset函数的头文件是cstring, 实际上是一个字符串处理函数,但常用于给静态数组(不是new出来的数组)赋特定初值。

#include<cstring>

C++ Reference关于memset函数的链接页:memset - C++ Reference

在使用的时候有2点需要特别注意:

1. value虽然是以int(32 bit)类型给的,但最终是转化为了unsigned char(8 bit)

所以,可以赋的最大初值是memset(a,0x3f, sizeof(a)),相当于赋了1061109567,

memset(a, 0xff, sizeof(a))相当于赋-1,memset(a, 0, sizeof(a))相当于赋0,而想要赋初值1是没法实现的

memset(a,0x3f,sizeof(a));			// 1061109567,1061109567,1061109567,1061109567,1061109567
memset(a, 1, sizeof(a));			// 16843009,16843009,16843009,16843009,16843009 

 

2. 动态开辟(new)出来的数组的头指针(p)经过sizeof运算后得到只是头指针的大小而不是整个数组的大小,所以动态开辟的数组不能用memset赋初值,如果要赋初值0的话,直接new的时候后面添一个()就行了。

 

int* p = new int[5]();				// 0,0,0,0,0
memset(p, 1, sizeof(p));			// 16843009,0,0,0,0
delete[] p;

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值