Inicializar un array a 0 en C

Satishkumar Bharadwaj 12 octubre 2023
  1. Use la función de la biblioteca C memset()
  2. Inicializar del array a valores distintos de 0
Inicializar un array a 0 en C

Este tutorial introduce cómo inicializar un array a 0 en C.

La declaración de un array en C es como se indica a continuación.

char ZEROARRAY[1024];

Se convierte en todos los ceros en tiempo de ejecución en el ámbito global. Hay un método abreviado si se trata de un array local. La declaración y la inicialización son como se indica a continuación.

char ZEROARRAY[1024] = {0};

Si un array está parcialmente inicializado, los elementos que no están inicializados recibirán el valor 0 del tipo de datos correspondiente. El compilador llenará las entradas no escritas con ceros.

Si no se especifica ningún inicializador, los objetos que tengan almacenamiento estático se inicializarán con el valor 0. La declaración es como se indica a continuación:

static int myArray[10];

Un array se inicializa a 0 si la lista de inicializadores está vacía o se especifica 0 en la lista de inicializadores. La declaración es la siguiente

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

La técnica más simple para inicializar un array es hacer un bucle a través de todos los elementos y ponerlos 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

Use la función de la biblioteca C memset()

La función memset es una función de biblioteca de string.h. Se utiliza para llenar un bloque de memoria con un valor determinado.

La sintaxis de la función memset() está debajo.

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

Donde,

  • pointerVariable es un puntero variable al bloque de memoria a llenar.
  • anyValue es el valor que se debe establecer. Es un valor entero, pero la función llena el bloque de memoria usando la conversión de caracteres sin signo de este valor.
  • numberOfBytes es el número de bytes que se fijará en el valor.

Esta función devuelve un puntero al área de memoria pointerVariable.

El programa completo es el siguiente:

#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 del array a valores distintos de 0

La inicialización de un array a valores distintos de 0 con gcc es como sigue:

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

Cada miembro de un array puede ser explícitamente inicializado omitiendo la dimensión. La declaración es como sigue:

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

El compilador deducirá la dimensión de la lista de inicialización y para matrices multidimensionales sólo se puede omitir la dimensión más externa:

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

Artículo relacionado - C Array