Inicializar um Array a 0 em C
Este tutorial introduz como inicializar um array para 0
em C.
A declaração de um array em C é a que se segue.
char ZEROARRAY[1024];
Torna-se tudo zeros em tempo de execução no âmbito global. Existe um método de abreviatura se for um array local. A declaração e inicialização são as que se seguem.
char ZEROARRAY[1024] = {0};
Se um array for parcialmente inicializado, os elementos que não forem inicializados receberão o valor 0
do tipo de dados relevantes. O compilador irá preencher as entradas não escritas com zeros.
Se não houver inicializador especificado, os objectos com armazenamento estático serão inicializados a 0. A declaração é a que se segue:
static int myArray[10];
Um array é inicializado a 0 se a lista de inicializadores estiver vazia ou 0 é especificado na lista de inicializadores. A declaração é a que se segue:
int number[5] = {};
int number[5] = {0};
A técnica mais simples para inicializar um array é fazer loop através de todos os elementos e defini-los como 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;
}
Resultado:
Array elements are:
00000
Utilize a função C Biblioteca memset()
A função memset()
é uma função de biblioteca da string.h
. É utilizada para preencher um bloco de memória com um determinado valor.
A sintaxe da função memset()
está abaixo.
void *memset(void *pointerVariable, int anyValue, size_t numberOfBytes);
Onde,
pointerVariable
é uma variável ponteiro para o bloco de memória a preencher.anyValue
é o valor a ser definido. Este é um valor inteiro, mas a função preenche o bloco de memória utilizando a conversão de caracteres não assinados deste valor.numberOfBytes
é o número de bytes a ser definido para o valor.
Esta função devolve um ponteiro para a área de memória pointerVariable
.
O programa completo é o que se segue:
#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;
}
Resultado:
Array after memset()
0 0 0 0 0 0 0 0 0 0
Inicializar o Array para valores diferentes de 0
Uma inicialização de um array para valores diferentes de 0
com gcc
é como abaixo:
int myArrayValues[1024] = {[0 ... 1023] = -1};
Cada membro de um array pode ser explicitamente inicializado omitindo a dimensão. A declaração é a que se segue:
int myArrayValues[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
O compilador irá deduzir a dimensão da lista de inicializadores e para arrays multidimensionais apenas a dimensão mais externa pode ser omitida.
int myPoints[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};