memset(a,0,sizeof(a))将a数组清为0
by ShineEternal @ 2019-11-13 18:38:33
~~盲猜大佬钓鱼~~
memset(数组名,值,sizeof(数组名));
但是经过实际考察
memset只能赋值0,1
而且康起来枚举竟然还快…
by 东灯 @ 2019-11-13 18:39:31
siseof(a)是什麽?
@[ShineEternal](/user/45475)
memset函数只能运用在这个地方吗
by Chancylaser @ 2019-11-13 18:39:53
memset不也是可以赋较大值的吗。。。所以并不只是0,1
sizeof (a) 指的是 a这个变量的大小,一位数组时你填一个数组也是可以的
by keydu @ 2019-11-13 18:41:42
@[keydu](/user/27427) 求大佬详解
by Chancylaser @ 2019-11-13 18:43:19
写错了,一维数组时填一个数字也是可以的
by keydu @ 2019-11-13 18:44:27
```cpp
memset(void *a, int b, size_t t)
```
中b是指把a的每个字节赋值为b,t是赋值的位数
by Hyc0769 @ 2019-11-13 18:44:42
而且memset利用内存对齐的性质,赋值比枚举快
by Hyc0769 @ 2019-11-13 18:46:35
@[东灯](/user/160363) @[yanlin0521](/user/241817)
memset(a,val,t)的作用应该是从a开始,把其后面t个**字节**赋值为val.
例如一个(int)型变量在内存中是这样储存的:
00000000 00000000 00000000 00000000
当val的值为0的时候,它会被赋值成这样:
00000000 00000000 00000000 00000000
当val为1的时候,它会变成这样:
00000001 00000001 00000001 00000001
因此,memset不仅可以用于置0,还可以用于置INF
eg.当val=127时,这个(int)会变成这样:
01111111 01111111 01111111 01111111
整个(int)的值就会变成2139062143,这足以对一个INF赋值了.
此外,关于有关memset()慢的问题,应该是没有算好要使用的内存,把你那个奇大无比的数组全塞进去了,这肯定是比for()慢的.若是嫌初始化过慢,又不会算内存,**对于线型数组**可以这么赋值:
memset(a,val,n*sizeof(int));
n为此次初始化中你要操作的范围
by Seg_Tree @ 2019-11-13 19:51:42
@[Lord_Vader](/user/249736) 0x3f,0x7f也是可以的,就会变成0x3f3f3f3f和0x7f7f7f7f
by YYZYYZ @ 2019-11-13 20:20:42