清除陣列內容(清零)
初始化完成後,有時需要將陣列設定為零。
#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. */