Sometimes it's necessary to set an array to zero, after the initialization has been done.
#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;
}
An common short cut to the above loop is to use memset()
from <string.h>
. Passing array
as shown below makes it decay to a pointer to its 1st element.
memset(array, 0, ARRLEN * sizeof (int)); /* Use size explicitly provided type (int here). */
or
memset(array, 0, ARRLEN * sizeof *array); /* Use size of type the pointer is pointing to. */
As in this example array
is an array and not just a pointer to an array's 1st element (see Array length on why this is important) a third option to 0-out the array is possible:
memset(array, 0, sizeof array); /* Use size of the array itself. */