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