Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Vorwort des Gutachters
1 Einstieg in C
2 Das erste Programm
3 Grundlagen
4 Formatierte Ein-/Ausgabe mit »scanf()« und »printf()«
5 Basisdatentypen
6 Operatoren
7 Typumwandlung
8 Kontrollstrukturen
9 Funktionen
10 Präprozessor-Direktiven
11 Arrays
12 Zeiger (Pointer)
13 Kommandozeilenargumente
14 Dynamische Speicherverwaltung
15 Strukturen
16 Ein-/Ausgabe-Funktionen
17 Attribute von Dateien und das Arbeiten mit Verzeichnissen (nicht ANSI C)
18 Arbeiten mit variabel langen Argumentlisten – <stdarg.h>
19 Zeitroutinen
20 Weitere Headerdateien und ihre Funktionen (ANSI C)
21 Dynamische Datenstrukturen
22 Algorithmen
23 CGI mit C
24 MySQL und C
25 Netzwerkprogrammierung und Cross–Plattform-Entwicklung
26 Paralleles Rechnen
27 Sicheres Programmieren
28 Wie geht’s jetzt weiter?
A Operatoren
B Die C-Standard-Bibliothek
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch
Buch: C von A bis Z

C von A bis Z
3., aktualisierte und erweiterte Auflage, geb., mit CD und Referenzkarte
1.190 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1411-7
Pfeil 3 Grundlagen
Pfeil 3.1 Zeichensätze
Pfeil 3.1.1 Basic-Zeichensatz
Pfeil 3.1.2 Ausführungszeichensatz (Steuerzeichen)
Pfeil 3.1.3 Trigraph-Zeichen
Pfeil 3.2 Symbole von C
Pfeil 3.2.1 Bezeichner
Pfeil 3.2.2 Schlüsselwörter
Pfeil 3.2.3 Literale
Pfeil 3.2.4 Einfache Begrenzer
Pfeil 3.2.5 Kommentare


Rheinwerk Computing - Zum Seitenanfang

3.2 Symbole von C Zur nächsten ÜberschriftZur vorigen Überschrift

Wie in jeder anderen Sprache auch, gibt es in C einige gültige Symbole, die Sie kennen sollten.


Rheinwerk Computing - Zum Seitenanfang

3.2.1 Bezeichner Zur nächsten ÜberschriftZur vorigen Überschrift

Den Begriff Bezeichner verwendet man für Namen von Objekten im Programm. Dazu gehören Variablen, Funktionen usw.

Ein gültiger Bezeichner darf aus beliebigen Buchstaben, Ziffern und dem Zeichen _ (Unterstrich) bestehen. Allerdings darf das erste Zeichen niemals eine Ziffer sein. Beachten Sie außerdem, dass C++ zwischen Groß- und Kleinbuchstaben (englisch: case sensitive) unterscheidet. Somit sind »Hallo«, »hallo« und »HALLO« drei verschiedene Bezeichner.


Regeln für Bezeichner

Für einen gültigen Bezeichner gibt es somit folgende Regeln:

  • Namen bestehen aus Buchstaben, Ziffern und Unterstrichen.
  • Das erste Zeichen eines Bezeichners muss ein Buchstabe sein.
  • Bezeichner sollten nicht mit einem Unterstrich beginnen, da solche Bezeichner gewöhnlich für das System reserviert sind. Dies ist aber wohl eher eine Stil-Frage als eine Regel.
  • Es wird zwischen Groß- und Kleinbuchstaben unterschieden.
  • Schlüsselwörter von C (siehe Anhang A.3) dürfen nicht als Bezeichner verwendet werden.


Rheinwerk Computing - Zum Seitenanfang

3.2.2 Schlüsselwörter Zur nächsten ÜberschriftZur vorigen Überschrift

Schlüsselwörter sind Bezeichner mit einer vorgegebenen Bedeutung in C. Sie dürfen nicht anderweitig verwendet werden. So dürfen Sie beispielsweise keine Variable mit dem Bezeichner »int« verwenden, da es auch einen Basisdatentyp hierzu gibt. Der Compiler würde sich ohnehin darüber beschweren. Eine Liste der Schlüsselwörter in C finden Sie in Anhang A.3.


Rheinwerk Computing - Zum Seitenanfang

3.2.3 Literale Zur nächsten ÜberschriftZur vorigen Überschrift

Als Literale werden Zahlen, Zeichenketten und Wahrheitswerte im Quelltext bezeichnet, die ebenfalls nach einem bestimmten Muster aufgebaut sein müssen. Man kann auch sagen: Literale sind von einer Programmiersprache definierte Zeichenfolgen zur Darstellung der Werte von Basistypen.

Ganzzahlen

Man unterscheidet bei Ganzzahlen zwischen Dezimal-, Oktal- und Hexadezimalzahlen, für die folgende Regeln gelten:

  • Dezimalzahlen (Basis 10) – Eine Dezimalzahl besteht aus einer beliebig langen Ziffernreihe aus den Zeichen 0 bis 9. Die erste Ziffer darf allerdings keine 0 sein.
  • Oktalzahlen (Basis 8) – Eine Oktalzahl hingegeben beginnt immer mit einer 0, gefolgt mit einer Reihe von Oktalzahlen (0–7).
  • Hexadezimalzahlen (Basis 16) – Eine Hexadezimalzahl beginnt immer mit der Sequenz 0x bzw. 0X, gefolgt von einer Reihe von Hexadezimalzahlen (0–F = 0 1 2 3 4 5 6 7 8 9 A B C D E F (oder Kleinbuchstaben: a b c d e f)).

Man kann hinter den Dezimal-, Oktal- und Hexadezimalzahlen noch ein Suffix anhängen, um den Wertebereich einer Zahl genauer zu spezifizieren. Das Suffix u bzw. U deutet beispielsweise an, dass es sich um eine vorzeichenlose (unsigned) Zahl handelt. l bzw. L gibt an, dass es sich um eine long-Zahl handelt. In Tabelle 3.3 sehen Sie einige Beispiele, wobei die Zahlen in einer Reihe immer gleichwertig sind.


Tabelle 3.3 Beispiele für gültige Ganzzahlen

Dezimalzahl Oktalzahl Hexadezimalzahl

123

0173

0x7B

1234567L

04553207L

0X12D687L

66u

0102U

0x42u


Fließkommazahlen

Wie eine korrekte Fließkommazahl dargestellt wird, wird in Abschnitt 5.8 genauer beschrieben, wenn es um die Basistypen von Fließkommazahlen geht. Wie bei den Ganzzahlen können Sie den Fließkommazahlen ebenfalls ein Suffix hinzufügen. Mit dem Suffix f oder F kennzeichnen Sie eine Fließkommazahl mit einer einfachen Genauigkeit. Das Suffix l oder L hingegen deutet auf eine Fließkommazahl mit erhöhter Genauigkeit hin.

Einzelne Zeichen

Ein Zeichenliteral wird zwischen einfache Hochkommata (Single Quotes) eingeschlossen ('A', 'B', 'C', ... '$', '&' usw.). Wenn Sie nichtdruckbare Zeichen wie beispielsweise einen »Tabulator« oder »Zeilenvorschub« darstellen wollen, müssen Sie eine Escape-Sequenz (auch Steuerzeichen genannt) verwenden. Escape-Sequenzen werden mit einem Backslash (\) eingeleitet (z. B. ein Tabulator = '\t' oder ein Zeilenvorschub = '\n').

Zeichenketten

Eine Zeichenkette (häufig auch String genannt) ist eine Sequenz von Zeichen, die zwischen doppelte Hochkommata (Double Quotes) gestellt werden (beispielsweise "Ich bin eine Zeichenkette"). Es ist im Zusammenhang mit einer Zeichenkette sehr wichtig zu wissen, dass jede dieser Ketten um ein Zeichen länger ist, als (sichtbar) dargestellt. Gewöhnlich werden Zeichenketten durch das Zeichen mit dem ASCII-Wert 0 (nicht der dezimalen Null) abgeschlossen (0x00 oder als einzelnes Zeichen '\0'). Diese ASCII-0 kennzeichnet immer das Ende einer Zeichenkette. Somit enthält beispielsweise die Zeichenkette "C++" vier Zeichen, weil am Ende auch das Zeichen 0x00 (oder auch '\0') abgelegt ist.


Rheinwerk Computing - Zum Seitenanfang

3.2.4 Einfache Begrenzer Zur nächsten ÜberschriftZur vorigen Überschrift

Um die Symbole voneinander zu trennen, benötigt man in C Begrenzer. In diesem Abschnitt wird nur auf einfache Begrenzer hingewiesen. Weitere solcher Begrenzer werden Sie im Verlauf des Buches näher kennenlernen.

Das Semikolon (;)

Der wichtigste Begrenzer dürfte das Semikolon ; (Plural: Semikola und Semikolons) sein, das auch Strichpunkt genannt wird. Es dient als Abschluss einer Anweisung. Jeder Ausdruck, der mit einem solchen Semikolon endet, wird als Anweisung behandelt. Der Compiler weiß dann, dass hier das Ende der Anweisung ist, und fährt nach der Abarbeitung der Anweisung (Befehl) mit der nächsten Zeile bzw. Anweisung fort. Natürlich hat das Semikolon keine Wirkung, wenn es in einer Stringkonstante verwendet wird:

"Hallo; Welt"

Komma

Mit dem Komma trennt man gewöhnlich die Argumente einer Funktionsparameterliste oder bei der Deklaration mehrere Variablen desselben Typs.

Geschweifte Klammern

Zwischen den geschweiften Klammern (amerikanisches Englisch: braces, britisches Englisch: curly brackets) wird der Anweisungsblock zusammengefasst. In diesem Block befinden sich alle Anweisungen (abgeschlossen mit einem Semikolon), die in einer Funktion ausgeführt werden sollen. Beispielsweise sind beim Listing hallo.c alle Anweisungen der main-Funktion zwischen den geschweiften Klammern zusammengefasst:

int main(void) {
    printf("Hallo Welt!");
    return 0;
}

Hier wird lediglich die Textfolge »Hallo Welt!« auf dem Bildschirm ausgegeben und mit return der Wert 0 an den aufrufenden Prozess zurückgegeben. Mehr zur main-Funktion und deren Rückgabewert erfahren Sie etwas später in den Abschnitten 9.16 und 9.17.

Das Gleichheitszeichen (=)

Mit dem Gleichheitszeichen trennt man die Variablendeklaration von den Initialisierungslisten:

Typ bezeichner = wert;

Hinweis

Wenn Sie eine Variable initialisieren, so ist dies noch lange keine Zuweisung. Ist das nicht ein und dasselbe? Nicht ganz, zwar erfolgen die Zuweisung und die Initialisierung mit dem Gleichheitszeichen, aber zum einen handelt es sich ja hier um den Begrenzer = und zum zweiten um den Operator = – also um zwei verschiedene Dinge, die mit ein und demselben Zeichen einhergehen. Eine Initialisierung erfolgt immer erst beim Anlegen einer Variablen, während eine Zuweisung lediglich auf ein bereits existierendes Objekt ausgeführt werden kann.



Hinweis

Wenn Sie in einem Programm auf zwei aufeinanderfolgende == stoßen, so handelt es sich hierbei nicht mehr um eine Zuweisung, sondern um eine Prüfung.



Rheinwerk Computing - Zum Seitenanfang

3.2.5 Kommentare topZur vorigen Überschrift

Kommentare sind Textteile in einem C-Quelltext, die vom Compiler ignoriert werden. Kommentare können an einer beliebigen Stelle im Quelltext stehen. Kommentare können auf eine Programmzeile beschränkt sein oder sich über mehrere Zeilen erstrecken.


Hinweis

Die Verwendung von Kommentaren beeinflusst weder die Laufzeit des übersetzten Programms noch dessen Größe, weil Kommentare bei der Übersetzung in Maschinencode entfernt werden.


In den weiteren Programmen, die jetzt folgen, wird es häufiger vorkommen, dass der Quellcode dokumentiert ist, genauer gesagt, dass Kommentare eingefügt sind. Diese Kommentare werden vom Compiler ignoriert. Wie Sie Ihren Quellcode dokumentieren, bleibt letztlich Ihnen selbst überlassen. Sie können beliebig viel, alles oder auch gar nichts dokumentieren.

Wann sind Kommentare sinnvoll?

Kommentare sind eigentlich immer sinnvoll. Wenn Sie vorhaben sollten, ein größeres Projekt zu verwirklichen, kann sich dies über mehrere Monate hinausziehen. Um das Stückchen Quellcode, das Sie vor einem Monat geschrieben haben, nicht immer wieder von Neuem verstehen zu müssen, können Sie ein paar Kommentare mit Erklärungen einfügen. In einer Gruppe ist es ohnehin unerlässlich, mit Kommentaren zu arbeiten, damit jeder den Code des anderen besser versteht und nachvollziehen kann.

Hierzu ein Beispiel:

/* kommentare.c */
#include <stdio.h>

int main (void) {      //Beginn des Hauptprogramms
   int i = 10;         //Variable int mit dem Namen i und Wert 10
   printf("%d",i);     //Gibt die Zahl 10 aus.
   printf("\n");       //Springt eine Zeile weiter.
   printf("10");       //Gibt den String "10" aus.
   return 0;

/*  Hier sehen Sie noch eine 2. Möglichkeit, Kommentare
    einzufügen. Dieser Kommentar wird mit einem Slash-
    Sternchen eröffnet und mit einem Sternchen-Slash
    wieder beendet. Alles dazwischen wird vom Compiler
    ignoriert.  */
}

Kommentare sind nicht schwer zu verstehen. Sie werden einfach hinter zwei // oder zwischen /* Hier steht der Kommentar */ geschrieben.

Häufig werden Kommentare vor Funktionen geschrieben. Ein guter Stil könnte so aussehen:

/******************************
 *                            *
 * Beschreibung der Funktion  *
 * Parameter1   : ...         *
 * Parameter2   : ...         *
 * Rückgabewert : ...         *
 *                            *
 ******************************/

In den Kommentaren können Sie beliebige Zeichen verwenden, also auch deutsche Umlaute oder das Dollarzeichen.


Hinweis

Auch wenn immer empfohlen wird, den Quellcode zu kommentieren, sollten Sie nicht den Fehler machen, jede Zeile zu kommentieren. Bei Code, der ohnehin klar ist, sollten Sie auf Kommentare verzichten. Wenn Sie versuchen, schwer verständlichen Code zu kommentieren, sollten Sie sich vielleicht überlegen, ob Sie nicht den Code vereinfachen könnten.


Welche Kommentar-Schreibweise? – // oder /* */

Da Sie zwei Möglichkeiten haben, Kommentare zum Programm hinzuzufügen, stellt sich die Frage, welche Methode von den beiden die bessere ist. Die folgende Schreibweise wurde erst im Oktober 1999 zum C99-Standard hinzugefügt:

// Kommentar

Dieser Stil war zuvor nur für C++ erlaubt und im C89-Standard nicht zugelassen. Problematisch könnte dies werden, wenn Sie einen etwas älteren Compiler verwenden. Er würde einen solchen Kommentar als Fehler bemängeln und sich weigern, das Programm zu übersetzen.


Hinweis

Bei DOS- oder Linux-Compilern sollten recht selten Probleme auftreten. Der CC unter IRIX z. B. verhält sich da schon ganz anders als ein üblicher GCC.


Etwas müssen Sie außerdem noch beachten, wenn Sie die Schreibweise // verwenden. Sehen Sie sich dazu folgendes Listing an:

/* kommentare_fehler.c */
#include <stdio.h>

int main(void) {
   //das Programm befindet sich im Pfad C:\programme\
   printf("Hallo Welt\n");
   return 0;
}

»Hallo Welt« wird niemals ausgegeben. Der Grund dafür ist, dass die Zeile mit dem Kommentar mit einem Backslash endet. Achten Sie also darauf, dies zu vermeiden, denn die Suche nach diesem Fehler könnte unnötig Zeit kosten. Wenn Sie außerdem eine etwas höhere Warnstufe des Compilers (beispielsweise das Flag -Wall beim GCC) verwenden, wird dieser Sie auch darauf hinweisen, dass der Kommentar nicht in Ordnung ist (beispielsweise mit warning: multi-line comment).



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z

 C von A bis Z
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: C/C++






 C/C++


Zum Katalog: Einstieg in C






 Einstieg in C


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de