PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Definitionen



24-07-2000, 10:05
Hallo zusammen,

nach einer kleinen Abstinenz habe ich mal wieder ein paar Schritte in Sachen C++ im Selbststudium gemacht. Natürlich ist wieder eine kleine Frage aufgetaucht http://www.linuxforen.de/ubb/smile.gif

Kann mir jemand erklären wie das mit den Definitionen in C++ ist? Soweit ich das verstanden habe, muß man einer deklarierten Variablen irgendwo im Code einen Wert (im Buch steht immer was von Entität, also eine gegebene Größe) zuweisen (dieses zuweisen verstehe ich dann als Definition).

Irgendwie habe ich nun den Eindruck, daß diese Wertzuweisung bereits direkt im Deklarationsteil erfolgen muß, man also z. B. einer Integervariablen sofort einen Startwert zuweisen muß (int zaehler=0 http://www.linuxforen.de/ubb/wink.gif? Kann man das nicht auch später machen, bzw. was ist denn laut Konventionen sinnvoll?

Danke und Gruß

Stefan

28-07-2000, 20:06
Hi Stefan!

Ich bin auch Programmier-Autodidakt und C-Einsteiger. Insofern verstehe ich Deine Problemchen, gebe aber gleichzeitig keine Garantie auf Richtigkeit meiner Angaben. (Vor allem was Konventionen angeht, bin ich gerade erst am aufarbeiten meiner Kenntnisse. http://www.linuxforen.de/ubb/wink.gif
Ein paar Begrifflichkeiten (zumindest wie ich es bisher mitbekam...) http://www.linuxforen.de/ubb/biggrin.gif

Variablen-Deklaration:
Deklarieren heißt erklären. Damit erklärst Du, dass es einen Speicherbereich einer gewissen Größe gibt, den unter dem Variablennamen ansprechen kannst.

Variablen-Initialisierung
Initiieren heißt einleiten/starten. D.h. im Klartext: Die Initialisierung (das Wort kommt von intiieren) ist die erste Wertbelegung der Variablen.

Welches von beidem man jetzt als Definition einer Variablen ansieht... nun ich glaube eher das erstere, da es ab diesem Zeitpunkt die Variable gibt.

Ich versuch mal ein Beispiel:

int main(){
int a; /* ist die reine Deklaration */
a = 4; /* hier wird a intialisiert */
int b = 5; /* Deklaration inklusive Initialisierung */
printf("\nVariable a: %d\nVariable b: %d",a,b);
}

Dieses Programm ist von mir jetzt nicht getestet, sondern aus den Fingern gesaugt, kann sein, dass Du noch #include <stdio.h> vorne hinsetzen musst.
Jetzt aber zum Wesentlichen: Der Vorteil liegt einfach darin, dass Variable b von Anfang an einen Wert hat, Variable a nicht!
Der Compiler belegt für a einfach nur einen Platz im Speicher mit der Größe eines Integer, er löscht ihn nicht. Das heißt, dass egal was vorher dort stand immer noch dort steht und als Wert von a aufgefasst wird.
JAVA, obwohl an C angelehnt, initialisiert übrigens immer von vornherein, da wäre der Anfangswert von a 0. http://www.linuxforen.de/ubb/wink.gif

Ich hoffe Dir geholfen zu haben. Wenn Du noch Fragen hast, poste ins Forum oder schreib mir 'ne Mail, die müsste in meiner Charakteristik stehen.

Ciao,

djlauk

31-07-2000, 17:20
Hi,

und vielen Dank, jetzt bin ich wunschlos glücklich! Bestätigt genau das was ich mir "zusammengereimt" hatte!

Gruß und Danke

Stefan