Initialisieren eines Arrays auf 0 in C

Satishkumar Bharadwaj 12 Oktober 2023
  1. C-Bibliotheksfunktion memset() verwenden
  2. Initialisierung des Arrays auf andere Werte als 0
Initialisieren eines Arrays auf 0 in C

Dieses Tutorial stellt vor, wie man in C ein Array auf 0 initialisiert.

Die Deklaration eines Arrays in C ist wie unten angegeben.

char ZEROARRAY[1024];

Es wird zur Laufzeit im globalen Bereich auf Null gesetzt. Wenn es sich um ein lokales Array handelt, gibt es eine Shorthand-Methode. Die Deklaration und Initialisierung sind wie unten angegeben.

char ZEROARRAY[1024] = {0};

Wenn ein Array teilweise initialisiert ist, erhalten die nicht initialisierten Elemente den Wert 0 des entsprechenden Datentyps. Der Compiler füllt die ungeschriebenen Einträge mit Nullen auf.

Wenn kein Initialisierer angegeben ist, werden die Objekte mit statischem Speicher auf 0 initialisiert. Die Deklaration ist wie unten angegeben:

static int myArray[10];

Ein Array wird auf 0 initialisiert, wenn die Initialisierungsliste leer ist oder 0 in der Initialisierungsliste angegeben ist. Die Deklaration ist wie unten angegeben:

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

Die einfachste Methode, ein Array zu initialisieren, besteht darin, alle Elemente in einer Schleife zu durchlaufen und sie auf “0” zu setzen.

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

Ausgabe:

Array elements are:
00000

C-Bibliotheksfunktion memset() verwenden

Die Funktion memset() ist eine Bibliotheksfunktion aus string.h. Sie wird verwendet, um einen Speicherblock mit einem bestimmten Wert zu füllen.

Die Syntax der Funktion memset() lautet wie folgt.

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

Wo,

  • pointerVariable ist eine Zeigervariable auf den zu füllenden Speicherblock.
  • anyValue ist der zu setzende Wert. Es handelt sich um einen Integer-Wert, aber die Funktion füllt den Speicherblock unter Verwendung der Umwandlung dieses Wertes in ein vorzeichenloses Zeichen.
  • anyValue ist die Anzahl der Bytes, die auf den Wert gesetzt werden sollen.

Die Funktion gibt einen Zeiger auf den Speicherbereich pointerVariable zurück.

Das komplette Programm sieht wie folgt aus:

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

Ausgabe:

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

Initialisierung des Arrays auf andere Werte als 0

Eine Initialisierung eines Arrays auf andere Werte als 0 mit gcc sieht wie folgt aus:

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

Jedes Mitglied eines Arrays kann explizit initialisiert werden, indem die Dimension weggelassen wird. Die Deklaration ist wie unten:

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

Der Compiler leitet die Dimension aus der Initialisierungsliste ab und bei mehrdimensionalen Arrays darf nur die äußerste Dimension weggelassen werden:

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

Verwandter Artikel - C Array