Clearing array contents zeroing

suggest change

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 http://stackoverflow.com/documentation/c/322/arrays/1125/array-length#t=201701141205543540386 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. */

Feedback about page:

Feedback:
Optional: your email if you want me to get back to you:



Table Of Contents