Inizializza un array su 0 in C

Satishkumar Bharadwaj 12 ottobre 2023
  1. Usa la funzione libreria C memset()
  2. Inizializza la matrice su valori diversi da 0
Inizializza un array su 0 in C

Questo tutorial introduce come inizializzare un array su 0 in C.

La dichiarazione di un array in C è come indicato di seguito.

char ZEROARRAY[1024];

Diventa tutti zeri in fase di esecuzione nell’ambito globale. Esiste un metodo abbreviato se si tratta di un array locale. La dichiarazione e l’inizializzazione sono le seguenti.

char ZEROARRAY[1024] = {0};

Se un array è parzialmente inizializzato, gli elementi che non sono inizializzati riceveranno il valore 0 del tipo di dati pertinente. Il compilatore riempirà le voci non scritte con zeri.

Se non è specificato alcun inizializzatore, gli oggetti con archiviazione statica verranno inizializzati a 0. La dichiarazione è come di seguito:

static int myArray[10];

Un array viene inizializzato su 0 se l’lista degli inizializzatori è vuoto o se viene specificato 0 nell’lista degli inizializzatori. La dichiarazione è la seguente:

int number[5] = {};
int number[5] = {0};

La tecnica più semplice per inizializzare un array è scorrere tutti gli elementi e impostarli come 0.

#include <stdio.h>

int main(void) {
  int numberArray[10], counter;

  for (counter = 0; counter < 5; counter++) {
    numberArray[counter] = 0;
  }
  printf("Array elements are:\n");
  for (counter = 0; counter < 5; counter++) {
    printf("%d", numberArray[counter]);
  }
  return 0;
}

Produzione:

Array elements are:
00000

Usa la funzione libreria C memset()

La funzione memset() è una funzione di libreria da string.h. Viene utilizzato per riempire un blocco di memoria con un valore particolare.

La sintassi della funzione memset() è di seguito.

void *memset(void *pointerVariable, int anyValue, size_t numberOfBytes);

Dove,

  • pointerVariable è una variabile puntatore al blocco di memoria da riempire.
  • anyValue è il valore da impostare. Questo è un valore intero, ma la funzione riempie il blocco di memoria utilizzando la conversione di caratteri senza segno di questo valore.
  • numberOfBytes è il numero di byte da impostare al valore.

Questa funzione restituisce un puntatore all’area di memoria pointerVariable.

Il programma completo è il seguente:

#include <stdio.h>
#include <string.h>

void printArrayvalues(int anyArray[], int anyNumber) {
  int index;
  for (index = 0; index < anyNumber; index++) printf("%d ", anyArray[index]);
}

int main(void) {
  int number = 10;
  int arrayValues[number];

  memset(arrayValues, 0, number * sizeof(arrayValues[0]));
  printf("Array after memset()\n");

  printArrayvalues(arrayValues, number);

  return 0;
}

Produzione:

Array after memset()
0 0 0 0 0 0 0 0 0 0 

Inizializza la matrice su valori diversi da 0

L’inizializzazione di un array su valori diversi da 0 con gcc è la seguente:

int myArrayValues[1024] = {[0 ... 1023] = -1};

Ogni membro di un array può essere inizializzato in modo esplicito omettendo la dimensione. La dichiarazione è la seguente:

int myArrayValues[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

Il compilatore dedurrà la dimensione dall’lista degli inizializzatori e per gli array multidimensionali, solo la dimensione più esterna può essere omessa.

int myPoints[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

Articolo correlato - C Array