Linux C Programmierung Tutorial Teil 17: Variableninitialisierung

Die Initialisierung von Variablen ist etwas, was wir während dieser laufenden C-Programmier-Tutorialserie bisher gemacht haben, aber wir haben es nie wirklich explizit diskutiert. Nun, das ändert sich jetzt, da wir hier über die Initialisierung der Variablen diskutieren werden.

Was genau ist also Initialisierung? Nun, wie der Name schon sagt, wenn ein Wert zum ersten Mal einer Variablen zugewiesen wird, spricht man von einer Variableninitialisierung. Zum Beispiel:

int a = 1;

Dies wird nun auch als explizite Initialisierung bezeichnet. Der Grund dafür ist, dass Sie, selbst wenn Sie einer Variablen wie ‚a‘ keinen Wert zuweisen und versuchen, den Wert der Variablen zu drucken, einen zufälligen Wert sehen werden.

Betrachten Sie zum Beispiel den folgenden Code:

#include <stdio.h>
int main()
{
int a;
printf("a = %d", a);

return 0;
}

Als ich diesen Code ausführte, bekam ich ‚a‘ als ‚0‘. Dies ist jedoch nicht immer der Fall, da automatische Variablen wie ‚a‘ ohne explizite Initialisierung auf Zufallswerte initialisiert werden. Aus diesem Grund wird immer vorgeschlagen, sie explizit mit einem Wert zu initialisieren, z.B.’0′, um zu vermeiden, dass ein Garbage-Wert versehentlich verwendet wird.

Beachten Sie, dass nur automatische Variablen den Garbage-Wert erhalten, wenn sie nicht initialisiert sind. Statische und globale Variablen erhalten’0′ als Anfangswert, auch wenn Sie nicht explizit einen Wert zuweisen. Hier ist ein Beispiel:

int x;
void func();
{
static int b;

//statements

b++;
}

int main()
{
int a;

//statements

func();
return 0;
}

Im obigen Code ist gewährleistet, dass die Variablen’x‘ und’b‘ auf’0′ initialisiert werden, aber es gibt keine Garantie dafür, welchen Wert die Variable’a‘ enthalten wird.

Sie können nun nur noch statische und globale Variablen mit konstanten Werten initialisieren. Mit anderen Worten, es ist nicht möglich, statischen und globalen Variablen im Sinne anderer Variablen Werte zuzuweisen.

Hier ist ein Beispiel:

#include <stdio.h>
int k;
int x = k;

void func()
{
int z = 2;

static int b = z;
b++;
}

int main()
{
int a;
printf("a = %d", a);

func();
return 0;
}

Als ich diesen Code kompiliert habe, bekam ich folgende Fehler:

main.c:12:9: error: initializer element is not constant
 int x = k;
         ^
main.c: In function ‘func’:
main.c:18:20: error: initializer element is not constant
     static int b = z;
                    ^

Da ‚x‘ global und ‚b‘ statisch ist, sehen Sie, dass der Compiler deutlich sagt, dass die Initialisierungselemente nicht konstant sind. Dies bestätigt also die Tatsache, dass nur Konstanten zur Initialisierung von globalen und statischen Variablen verwendet werden können.

Im weiteren Verlauf können Arrays auch auf verschiedene Weise initialisiert werden. Zum Beispiel ist eine Möglichkeit, die Initialisierung ist:

int arr[] = {1,2,3,4,5};

Auf diese Weise wird die Größe des Arrays durch Zählen der Anzahl der Initialisierungselemente berechnet. In diesem Beispiel hat das Array ‚arr‘ also eine Größe von 5, mit den Werten 1-5 als Elementen (in dieser Reihenfolge).

Als nächstes, nehmen wir an, die Größe des Arrays ist vordefiniert, und Sie initialisieren das Array mit der obigen Methode. Hier ist ein Beispiel:

int arr[5] = {1,2,3,4};

In diesem Fall werden dann die ersten vier Elemente aus der unter {} angegebenen Liste übernommen und das letzte Element ist ‚0‘. Also ja, Sie können auf diese Weise weniger Elemente als die Größe des Arrays bereitstellen und den Rest dem Compiler überlassen, indem Sie sie mit’0′ initialisieren.

Zum Beispiel das folgende Programm:

#include <stdio.h>

int main()
{
int arr[10] = {1,2,3,4,5};
int i = 0;

for(i=0;i<10;i++)
printf(„%d „, arr[i]);

return 0;
}

erzeugt die folgende Ausgabe:

1 2 3 4 5 0 0 0 0 0

Fazit

In diesem Tutorial haben wir ein wenig über die Initialisierung von Variablen diskutiert. Ich möchte Sie ermutigen, die hier diskutierten Beispiele und Konzepte auszuprobieren. Falls du irgendwelche Zweifel oder Fragen hast, kannst du gerne einen Kommentar unten abgeben.

Das könnte Dich auch interessieren …