【问题标题】:C reinitialize arrayC 重新初始化数组
【发布时间】:2015-12-05 20:53:06
【问题描述】:

假设我像这样初始化一个数组:

char array[] = {0, 0, 0, 0, 0};

然后我通过向它写入一些数据来修改该数组,所以最后它看起来像这样:

array[] = {1, 42, 32, 16, 89};

如果我想将同一个数组重新初始化为零,以便我可以再次使用同一个数组,这样做是否正确?:

memset(array, 0, 5);

谢谢

【问题讨论】:

    标签: c arrays string char memset


    【解决方案1】:

    是的,但是memset(array, 0, sizeof(array)); 会更好,如果将大小更改为例如,则不需要跟踪数组的大小。 6 晚。

    【讨论】:

    • 第三个参数必须是sizeof(array)。这是sizeof array[0]大于1的情况(例如,如果有int array[])。 memset 占用字节数。
    • 只是补充一点:memsetting 除了char 数组之外的任何东西时要小心。如果设置为0 以外的设置则更多。这是因为memset 在char [] 上工作,并且对数组的实际类型没有概念。
    • @Olaf,你能在unsigned char上使用memset吗?
    • 您是否故意以“甚至更好”来结束您的回答,而没有任何后续文字?
    • @cad 不是故意的 :)
    【解决方案2】:

    [...] 这样做是否正确?

    是的。

    【讨论】:

      猜你喜欢
      • 2016-06-13
      • 2012-04-04
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      相关资源
      最近更新 更多