C Language Cancellazione dei contenuti dell'array (azzeramento)


Esempio

A volte è necessario impostare un array su zero, dopo che l'inizializzazione è stata eseguita.

#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;
}

Una scorciatoia comune al ciclo precedente consiste nell'utilizzare memset() da <string.h> . Il passaggio array come mostrato di seguito lo fa decadere da un puntatore al suo 1 ° elemento.

memset(array, 0, ARRLEN * sizeof (int)); /* Use size explicitly provided type (int here). */

o

memset(array, 0, ARRLEN * sizeof *array); /* Use size of type the pointer is pointing to. */

Come in questo esempio, l' array è un array e non solo un puntatore al primo elemento di un array (vedi la lunghezza dell'array sul perché questo è importante) è possibile una terza opzione per 0-out dell'array:

 memset(array, 0, sizeof array); /* Use size of the array itself. */