【问题标题】:why memset fill 0 in 2d array correctly but fail to fill 1 in that array? [duplicate]为什么 memset 在二维数组中正确填充 0 但未能在该数组中填充 1? [复制]
【发布时间】:2016-10-18 06:04:46
【问题描述】:

我尝试使用 memset 用 1 填充二维数组。

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

【问题讨论】:

标签: c++ c arrays memory memset


【解决方案1】:

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

00000001000000010000000100000001b = 16843009

【讨论】:

    【解决方案2】:
    memset(arr,1,sizeof(arr));
    

    处理每个字节。一个 int 有四个字节(可能会改变),因此 memset 1 在写入每个字节时使 int 值变为 16843009(二进制 00000001000000010000000100000001)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-27
      • 2011-06-29
      • 1970-01-01
      相关资源
      最近更新 更多