Was ist der Unterschied zwischen Zuweisung und Initialisierung?


07.03.2021, 13:55

BIld 2

5 Antworten

Wenn man eine Variable bei C anlegt, sucht der Compiler eine freie Speicherzelle auf die diese Variable dann zeigt. Diese Speicherzelle enthält dann Werte die Programme die vorher liefen dort abgelegt hatten oder es wird eine Speicherzelle benutzt die das programm vorher bereits für was anderes benutzt hatte. Auf jeden Fall kann man nicht wissen, welcher Wert dann in dieser Variable steht.

Man muss also wenn man mit dem Wert in einer Variable arbeiten will vorher einen Wert hinein schreiben mit dem man arbeiten will. Das nennt man initialisieren. Man schreibt also einen initialen Wert hinein bevor man damit arbeiten kann. Das Wort "initial" bedeutet "Anfänglich" oder "Beginnend".

Benutzt man eine FOR Schleife, dann erfolgt diese Initialisierung automatisch:

int zaehler;
...
...

for (zaehler = 0; zaehler < 100; zaehler ++)
{
...
...
}

Der Compier übersetzt diese FOR Schleife intern in eine while Schleife:

int zaehler;

...
...

zaehler = 0;

  while(zaehler < 100)
  {
   ...
   ...
  zaehler++;
  }

Möchte man selber eine while Schleife benutzen, muss man wie oben den Schleifenzähler initialisieren. Das kann man machen wie der Compiler bei der FOR Schleife oder direkt bei der deklaration der Variable:

int zaehler = 0;

Hier wird dann eine Speicherzelle für die Variable gesucht und dann sofort mit dem gewünschten Wert (hier 0) beschrieben, also initialisiert.

Eine Initialisierung ist also eine Deklaration mit gleichzeitiger Zuweisung eines Wertes.

Woher ich das weiß:Berufserfahrung
gogogo  07.03.2021, 14:30

Danke, gut beschrieben.

Zustimmung.

0

Zuweisung ist das Setzen eines Wertes an eine Variable.

Initialisierung kommt von init, dem Beginn. Im Latein: er/sie/es geht hinein.

Es ist die erste Zuweisung an eine Variable, damit die im weiteren Verlauf einen definierten und erkennbaren Wert hat.

Wenn du nur

int alpha;

schreibst, hat alpha einen vom Programmcode her nicht festgelegten Wert. Daher die Initialisierung.

Eine Initislisierung ist eine Zuweisung, aber nicht andersrum, weil du auch später den Wert noch einmal durch eine Zuweisung ändern kannst.

Eine Deklaration ist eine Bekanntgabe von Typ und Namen einer Variablen.

tidy42 
Fragesteller
 07.03.2021, 13:40

Also Zuweisung PERMAEANTsetzen eines Wertes an eine Variable( später kann nicht verändert werden)?

aber Initialisierung ist Temporal setzen eines Wertes an ein Variable( später kann geändert werden)

0
gogogo  07.03.2021, 13:46
@tidy42

Nein,

für permanent ist das Schlüsselwort 'const' bei der Variablendeklaration.

Init heißt anfänglich, erstmals.

Teste doch mal das Beispiel mit 'int alpha;' und gib alpha mit printf( "alpha = %d\n", alpha ); aus. Dann starte das Programm mehrfach. alpha sollte bei den Progeammstarts meist verschieden sein.

Um alpha im weiteren Programmablauf beispielsweise mit dem Wert 0 zu haben, wird durch eine initiale / erste Zuweisung alpha mit einem definierten Wert belegt.

Im weiteren Verlauf kann alpha ein anderer Wert zugewiesen werden.

0
tidy42 
Fragesteller
 07.03.2021, 14:00
@gogogo

ehrlich ich verstehe dich immer nicht gut.

Das Buch sagt ( im BIld no2 oben) habe gerade hinzugefügt.

Wenn eine Variable bei Deklarieren gleichzeitig einen Wert bekommen( Zuweisung) ist dann diese Initialisierugn.stimmt?

Also Initialisierung= Deklarieren + Zuweisung . Stimmt? Wenn dann habe ich so wie im jetzt verstanden

1
gogogo  07.03.2021, 14:29
@tidy42

Klingt schon viel besser.

Wenn die Variable bei der Deklarierung einen Wert bekommt, dann ist das eine Initialisierung. Meine Definition weiter oben basiert auf C++ mit Klassen. Dort ist das etwas anders.

Eine Zuweisung ist auch das Setzen eines Wertes, aber nicht bei der Deklarierung.

1
tidy42 
Fragesteller
 07.03.2021, 14:34
@gogogo

also habe ich das Buch RCHtIG verstanden?

1
gogogo  07.03.2021, 14:38
@tidy42

Ja, für die Programmiersprache C.

In C++ sehe ich das etwas anders.

0
gogogo  07.03.2021, 15:00
@tidy42

Für mich ist auch folgendes eine Initialisierung. Da gehen die Meinungen vielleicht auseinander:

int a; // Deklarierung

int b;

a = 42; // Initialisierung

b = -376 * 17;

.... // weiterer Code

0
tidy42 
Fragesteller
 07.03.2021, 15:46
@gogogo

ich bleibe erst bei c

danke

sonst komme durcheinander

1
gogogo  07.03.2021, 16:39
@tidy42

Danke für die Rückmeldung. Habe mich zum Schluss nur noch auf C beschränkt, um dich nicht zu verwirren.

0

Initialisierung ist die erstmalige Zuweisung. Die geht auch automatisch, zB bei integer ist es 0.

gogogo  07.03.2021, 13:46

Für Java stimmt das mit dem Integer.

0

deklaration sagt es gibt eine variable dieses typs. initialisierung weiß dieser variable einen wert zu

Ein Variable zu initiaisieren, bedeutet, ihr erstmals einen Wert zu geben.