参数含义
参数名称 | 参数含义 |
---|---|
ptr | 内存块的地址(起始位置) |
value | 要填充的内容 |
num | 要填充的字节个数 |
初始化char数组
memset初始化按字节填充,char正好占一个字节,直接赋值即可
初始化int类型数组
memset初始化按字节填充,而int占四个字节,只进行一些特殊的初始化如0,-1,0x3f3f3f3f
计算机使用补码存储数值
0的二进制形式表示为0000 0000 0000 0000 0000 0000 0000 0000
-1的二进制形式表示为1111 1111 1111 1111 1111 1111 1111 1111
在使用memset时,将用value的最低位的1Byte(8bit)来填充内存块,即用1111 1111来填充。
所以数组中每个元素的二进制表示形式还是1111 1111 1111 1111 1111 1111 1111 1111。
0的情况同理。
故0,-1可以直接初始化:
memset(a,0,sizeof a);//0的初始化
memset(a,1,sizeof a);//1的初始化
memset(a,0x3f,sizeof a);//0x3f3f3f3f的初始化
博主中间那个应该写成1Byte,1B=8b,如果不区分的话容易误导人
好的,谢谢提醒