memset
是 <cstring>
头文件中的函数,可以用来给 C 风格字符串初始化为指定的字符。用在其它类型数组上需要注意它的语法。它是采用给每一个字节赋值的方式给一段连续内存赋值的。
memset(起始地址 x, 填充值 y, 字节数量 z);
memset
会把从 x
开始的 z
个字节的每个字节都设置为 y
。一般会使用 sizeof
方法得到某个数组所占内存(字节数)作为第三个参数。
char a[105];
memset(a, 'z', sizeof(a));
:给字符数组 a
初始化为了全 'z'
int a[105];
memset(a, 0, sizeof(a));
:给 int
数组 a
初始化为了全 0
(二进制为全 0)memset(a, -1, sizeof(a));
:给 int
数组 a
初始化为了全 -1
(二进制为全 1)memset(a, 0x3f, sizeof(a));
:给 int
数组 a
初始化为了 约 (0x3f3f3f3f
)memset(a, 0x7f, sizeof(a));
:给 int
数组 a
初始化为了 约 (0x7f7f7f7f
)memset(a, 0x80, sizeof(a));
:给 int
数组 a
初始化为了 约 (0x80808080
)memset(a, 0xc0, sizeof(a));
:给 int
数组 a
初始化为了 约 (0xc0c0c0c0
)long long
数组,上面四个分别是约最大值的一半、最大值、最小值、最小值的一半0x
是啥?
0x3f
是啥?
int
数组 memset
为 0x3f
后,每个数会变成 0x3f3f3f3f
?
int
占四个字节,每个字节都设置为 3f
后自然就是 0x3f3f3f3f
。-1
二进制是全 1
int
数组 a
的 a[1]~a[n]
全都设置为 12345678
?
fill(a+1,a+n+1,12345678);
,参考:http://cpp.33dai.cn/reference/zh/cpp/algorithm/fill.htmldouble
数组 a
的 a[1]~a[n]
全都设置为很大的数(比如 123456789.123
)?
fill(a+1,a+n+1,12345678.123);
,参考:http://cpp.33dai.cn/reference/zh/cpp/algorithm/fill.html