c++问题

灌水区

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


|