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