清除数组内容(清零)
初始化完成后,有时需要将数组设置为零。
#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. */