Die Programmiersprache C/C++

1. Einfuehrung
2. Historisches zur Programmiersprache C/C++

1. Einführung:

Da C zwar fast Hardware- Nähe wie ein Assembler erreicht, aber trozdem die Funktionalität einer höher stehenden Programmiersprache bietet, stellt es nahezu eine perfekte Kombination dieser beiden Extreme dar. Speziel das Betriebssystem Unix geht eine Starke Symbiose mit C ein. Große Teile des Systems sind in C geschrieben und Unix unterstüzt daher im Gegenzug die Möglichkeiten von C sehr gut.

2. Historisches zur Programmiersprache C/C++:

Die Programmiersprache C beruht auf der älteren Programmiersprache B. (Eine Programmiersprache A gibt es aber meines Wissens nicht !)

C++ ist die Weiterentwicklung der Programmiersprache C und unterstüzt auch objektorientierte Programmiertechniken. C++ wurde von Dr. Bjarne Stroustrup entwickelt.

3. Wichtige Datentypen:

Datentyp: Platzhalter: Bedeutung: Wertebereich: Speicherplatzbedarf:
char %c Zeichen 1 Byte
int (integer) %i oder %d Ganzahlen -32768...32767 2 Byte
float (float) %f Fließkommazahlen 3.4 * 10 ^ -38...3.4 * 10 ^ 38 4 Byte
double (long float) %lf  1.7 * 10 ^ -308...1.7 * 10 ^308 8 Byte
void 0 Byte

4. Escape- Sequenzen:

Escape- Squenz: Bedeutung:
\n (new line) Zeilenumbruch
\r (Carridge Return) Wagenrücklauf
\a (alert) Alarm, gibt einen Ton aus

5. Zuweisungsoperatoren:

Zuweisungsoperatoren: Bedeutung:
= Zuweisungsoperator

6. Vergleichoperatoren:

C kennt folgende Vergleichoperatoren. Das Ergebnis ist entweder "ja" oder "nein" bzw. "wahr" oder "falsch":
Vergleichsoperator: Bedeutung:
< kleiner als
<= kleiner oder gleich
> größer
>= größer oder gleich
== gleich
!= ungleich

7. Zeiger:

Ein Zeiger ist kurz gesagt eine Variable, die die Adresse einer anderen Variablen enthält. Die Deklaration eines Zeiger weisst i.d.R. folgende Form auf:

	typname *zgrname;

wobei typname ein beliebiger Variablentyp von C ist und angibt, von welchem Typ die Variable, auf den der Zeiger zeigt. Der Stern (*) ist der Indirektionsoperator und macht deutlich, dass zgrname ein Zeiger auf den Typ typname ist und keine Variable vom Typ typname. Zeiger können zusammen mit normalen Variablen deklariert werden. Hier einige Beispiele:

	char *ch1,*ch2;         /* ch1 und ch2 sind Zeiger auf den Typ char */
	float *wert, prozent;   /* wert ist ein Zeiger auf den Typ float und */
	                        /* prozent eine normale Variable vom Typ float */

Hinweis: Wird der Indirektionsoperator auf einen Zeiger angewendet, spricht man davon, dass die Zeigervariable dereferenziert wird.

Zu Begin muss der Zeiger erst einmal initialisiert werden. Dies geschieht durch Anweisungen der folgenden Form:

	zeiger = &variable;     /* weist zeiger die Adresse von variable zu */

Hier noch mal ein kleines Beispiel:

	int var=1;
	int *zgr;

	zgr=&var;

Nun lässt sich folgende Aussage treffen:

Ein weiterer wichtiger Punkt bei der verwendung von Zeigern ist die Zeigerarithmetik. Sie umfasst die Zeigeroperationen inkrementieren und dekrementieren. Hier ein kurzer Überblick:

	zgr++;                  /* Setzt den Zeiger auf das nächste Element */
	zgr += 4;               /* Setzt den Zeiger 4 Elemente weiter */
	zgr--;                  /* Setzt den Zeiger auf das vorherige Element */

Dabei ist zu beachten das C die größe der Datenelemente kennt, und so das weitersetzen des Zeiger für den jeweiligen Datentyp vornehmen kann.

17. Die Standard Bibliothek <stdio.h>:

18. Programieren mit dem C / C++ - Compiler:

Aufruf für ein C- Programm:
	gcc -o <Name des ausführbaren Programms> <Name der Source- Code Datei>
z.B.
	gcc -o test test.c
Die Option -o bedeutet das kein Objektfile, sondern direkt ein ausführbares Programm erstellt wird.
Aufruf für ein C++ - Programm:
	g++ -o <Name des ausführbares Programms> <Name der Source- Code Datei>

Die ausführbare Datei kann dann sofort aufgerufen werden, z.B. mit ./test. Die Librarys liegen in Verzeichnissen unterhalb von /usr/local/lib.a

Will man den gdb- Debugger einsetzen muss man den Aufruf um die Option -ggdb erweitern. Ein weiterer wichtiger Punkt ist die Ausgabe möglichst aller Warnungen mit der Option -Wall. Ein Aufruf könnte dann z.B. so aussehen:

	gcc -Wall -ggdb hallo2.c -o hallo2