清除陣列內容(清零)

初始化完成後,有時需要將陣列設定為零。

#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. */