清除数组内容(清零)

初始化完成后,有时需要将数组设置为零。

#include <stdlib.h> /* for EXIT_SUCCESS */

#define ARRLEN (10)

int main(void)
{
  int array[ARRLEN]; /* Allocated but not initialised, as not defined static or global. */

  size_t i;
  for(i = 0; i < ARRLEN; ++i)
  {
    array[i] = 0;
  }

  return EXIT_SUCCESS;
}

上述循环的一个常见捷径是使用 <string.h> 中的 memset()。如下所示传递 array 使其衰减为指向其第一个元素的指针。

memset(array, 0, ARRLEN * sizeof (int)); /* Use size explicitly provided type (int here). */

或者

memset(array, 0, ARRLEN * sizeof *array); /* Use size of type the pointer is pointing to. */

在这个示例中,array 一个数组,而不仅仅是指向数组第一个元素的指针(请参阅数组长度 ,了解为什么这样它这很重要)第三个选项可以将数组输出为 0:

 memset(array, 0, sizeof array); /* Use size of the array itself. */