使用memset对数组进行赋值时可能会有的疑惑

发布时间 2023-03-28 22:51:24作者: 正克斯

Memset(type name, int value, size) 

*第一个参数为变量的标识符,第二个要赋为数组的值,第三个为数组的大小(单位为字节,可用sizeof()表示)

原理:memset是字节为单位进行复制操作的

1、memset对char数组赋值时,char的大小是1个字节,因此每个char 元素都能赋值为value

2、int数组赋值时,因为一个int的大小为4个字节,当赋值为0或-1时不会出现问题,因为0的二进制补码为(00000000),-1的二进制补码为(11111111),而当赋值为非0非-1的数值时,比如赋值为1,那么每个元素最终的赋值结果应该为00000001 00000001 00000001 00000001 十进制为16843009,而不是1;当赋值为511时,结果为-1,因为511的二进制为(00000000 00000000 00000001 11111111)后八位为 (11111111)因此赋值后为每个元素都为(11111111 11111111 11111111 11111111)

3、结论 使用memset对char数组进行赋值时可以赋值为任何字符,对int数组进行赋值时只能赋值为0-1