06.10.2013 Aufrufe

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />

5.2 Initialisierung von Variablen<br />

Variablen von e<strong>in</strong>fachen Datentypen können folgendermassen <strong>in</strong>itialisiert werden.<br />

<strong>in</strong>t Laenge = 15;<br />

double Z<strong>in</strong>s = 5.25;<br />

long <strong>in</strong>t Sek<strong>und</strong>en = 2562435L;<br />

Wenn mehrere Variablen auf e<strong>in</strong>er Zeile def<strong>in</strong>iert <strong>und</strong> <strong>in</strong>itialisiert werden, müssen sie e<strong>in</strong>zeln <strong>in</strong>itialisiert<br />

werden:<br />

<strong>in</strong>t x=17, y=17, z=25;<br />

Bei der Initialisierung wird der Variable gleich bei der Erzeugung e<strong>in</strong> bestimmter Wert zugewiesen.<br />

Nicht <strong>in</strong>itialisierte globale Variablen werden automatisch auf den Wert 0 gesetzt, lokale Variablen<br />

h<strong>in</strong>gegen haben zufälligen Inhalt, wenn sie nicht <strong>in</strong>itialisiert werden!!!!<br />

Auf den Unterschied zwischen globalen <strong>und</strong> lokalen Variablen wird im Kapitel Funktionen noch<br />

näher e<strong>in</strong>gegangen.<br />

5.3 Deklaration von Variablen<br />

Bei der Deklaration e<strong>in</strong>er Variablen wird dem Compiler nur bekanntgemacht, dass es e<strong>in</strong>e Variable<br />

e<strong>in</strong>es bestimmten Typs gibt, es wird aber ke<strong>in</strong> Speicherplatz dafür reserviert. Die Variable muss<br />

deshalb woanders (meist <strong>in</strong> e<strong>in</strong>em anderen Modul) def<strong>in</strong>iert werden. Um e<strong>in</strong>e Variable zu deklarieren<br />

wird das Schlüsselwort extern vorangestellt. Nur globale Variablen können extern deklariert<br />

werden.<br />

extern <strong>in</strong>t x; /* Deklaration, es wird ke<strong>in</strong> Speicher belegt */<br />

extern long double UniverselleKonstante;<br />

5.4 Speicherklassen:<br />

Alle Variablen <strong>in</strong> e<strong>in</strong>em Programm werden verschiedenen Speicherklassen zugeordnet. Es gibt <strong>die</strong><br />

Klasse Static, <strong>die</strong> Klasse Automatic <strong>und</strong> <strong>die</strong> Klasse Register.<br />

Die Zuordnung zu den Speicherklassen erfolgt mit den Schlüsselworten register, auto,<br />

static <strong>und</strong> extern sowie dem Ort der Def<strong>in</strong>ition (Innerhalb oder ausserhalb von Blöcken).<br />

Globale Variablen (Ausserhalb von Blöcken def<strong>in</strong>ierte) <strong>und</strong> static Variablen gehören zur Klasse<br />

Static. Sie werden zu Beg<strong>in</strong>n des Programmlaufes e<strong>in</strong>mal <strong>in</strong>itialisiert <strong>und</strong> s<strong>in</strong>d bis zum Ende des<br />

Programmlaufes ständig verfügbar, sie existieren während des gesamten Programmlaufs.<br />

Nur Variablen <strong>in</strong>nerhalb von Blöcken (Mit {} e<strong>in</strong>geschlossene Anweisungen) können zu den Klassen<br />

Automatic oder Register gehören. Variablen der Speicherklasse Automatic werden automatisch<br />

erzeugt, wenn der Programmlauf <strong>in</strong> ihren Block e<strong>in</strong>tritt, <strong>und</strong> wieder gelöscht, wenn der Block verlassen<br />

wird. Alle Variablen, <strong>die</strong> <strong>in</strong>nerhalb von Blöcken def<strong>in</strong>iert werden, s<strong>in</strong>d per Default automatische<br />

Variablen, deshalb wird das Schlüsselwort auto eigentlich kaum verwendet.<br />

Variablen der Speicherklasse Register werden <strong>in</strong> Prozessorregister abgelegt, wenn <strong>die</strong>s möglich ist.<br />

Das ist s<strong>in</strong>nvoll für Variablen <strong>die</strong> besonders oft verwendet werden. Auf Variablen <strong>die</strong>ser Klasse<br />

kann jedoch der Adressoperator nicht angewendet werden, da Register ke<strong>in</strong>e Speicheradresse besitzen.<br />

Bei modernen Compiler ist das Schlüsselwort register eigentlich auch überflüssig, da sie<br />

sehr gute Optimierungsalgorithmen besitzen <strong>und</strong> Codeanalysen durchführen, um selbst oft gebrauchte<br />

Variablen <strong>und</strong> Werte zu identifizieren, <strong>und</strong> <strong>die</strong>se selbständig <strong>in</strong> Register ablegen. Mit dem<br />

Schlüsselwort register kann man <strong>die</strong>se Optimierungen sogar stören oder zunichte machen.<br />

Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 20/147

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!