2
我尝试用memset填充1的二维数组。为什么memset正确地在二维数组中填充0,但未能在该数组中填充1?
int arr[3][3];
memset(arr,1,sizeof(arr));
Result :
16843009 16843009 16843009
16843009 16843009 16843009
16843009 16843009 16843009
我尝试用memset填充1的二维数组。为什么memset正确地在二维数组中填充0,但未能在该数组中填充1?
int arr[3][3];
memset(arr,1,sizeof(arr));
Result :
16843009 16843009 16843009
16843009 16843009 16843009
16843009 16843009 16843009
memset
在字节级别上工作而不考虑其他步长。你int
为4个字节大,因此每这些字节被设置为00000001b
,因此
00000001000000010000000100000001b = 16843009
memset(arr,1,sizeof(arr));
上的每个字节工作。一个int有四个字节(可能会改变),所以memset 1写在每个字节上,使得int值为16843009(在bianry 00000001000000010000000100000001中)。
检查这个http://stackoverflow.com/questions/14761015/memset-an-array-to-1 –
或者只是'man memset'并且要特别注意***字节***这个词。 –