为什么memset正确填充2d数组中的0但却无法在该数组中填充1?

时间:2016-10-18 06:04:47

标签: c++ c arrays memory memset

我尝试用memset填充2D数组。

int arr[3][3];
memset(arr,1,sizeof(arr));
Result :  
16843009 16843009 16843009   
16843009 16843009 16843009  
16843009 16843009 16843009

2 个答案:

答案 0 :(得分:1)

memset(arr,1,sizeof(arr));

处理每个字节。一个int有四个字节(可能会改变),所以memset 1写入每个字节,使得int值达到16843009(在bianry 00000001000000010000000100000001中)。

答案 1 :(得分:1)

memset在字节级别上工作,而不考虑其他步长。您的int大4字节,因此每个字节都设置为00000001b,因此

00000001000000010000000100000001b = 16843009