Suchen und Finden
Service
C für Java-Programmierer
Carsten Vogt
Verlag Carl Hanser Fachbuchverlag, 2007
ISBN 9783446411326 , 251 Seiten
Format PDF, OL
Kopierschutz Wasserzeichen
Vorwort
6
Inhalt
8
1 Einführung
14
Schnelleinstieg: C und Java im Vergleich
15
1.1 C und Java von den Anfängen bis heute
16
1.1.1 Die Entwicklung von C
16
1.1.1.1 Der Ursprung
16
1.1.1.2 Grundlegende Eigenschaften
17
1.1.1.3 Standards
17
1.1.2 Objektorientierte Nachfolgesprachen
18
1.1.2.1 C++
18
1.1.2.2 Java
18
1.1.3 Einsatzgebiete von C und Java
19
1.2 C und Java im Sprachvergleich
19
1.2.1 Drei Beispielprogramme
19
1.2.1.1 Einfaches Programm mit Ausgabe
19
1.2.1.2 Programm mit Eingabe und C-spezifischen Datentypen
21
1.2.1.3 Programm mit einer Funktion
22
1.2.2 Eigenschaften von Java vs. Eigenschaften von C
23
1.2.2.1 Tabellarischer Vergleich
23
1.2.2.2 Objektorientierung vs. Prozedurorientierung
24
1.2.2.3 Interpretation vs. Übersetzung
26
1.3 Zu diesem Buch
27
1.3.1 Aufbau
27
1.3.2 Benutzung
28
1.3.3 Weitere Quellen
29
2 Struktur und Übersetzung von C-Programmen
31
Schnelleinstieg: Struktur und Übersetzung von C-Programmen
32
2.1 Aufbau von C-Programmen
33
2.1.1 C-Quellcode in einer einzelnen Datei
33
2.1.2 C-Quellcode in mehreren Dateien
34
2.2 Übersetzung von C-Programmen
35
2.2.1 Phasen der Übersetzung
35
2.2.2 Modularisierung
37
2.2.3 Übersetzung unter Windows
38
2.2.4 Übersetzung unter UNIX/Linux
39
2.3 Anweisungen des Präprozessors
41
2.3.1 #include: Einfügen von Header-Dateien
41
2.3.2 #define: einfache Ersetzung von Zeichenketten
42
2.3.3 #define: Makros mit Parametern
44
2.3.4 #ifdef, #if: bedingte Übersetzung
45
2.4 Übungsaufgaben
46
3 Kontrollstrukturen
48
Schnelleinstieg: Kontrollstrukturen
49
3.1 Blöcke
50
3.2 Bedingte Anweisungen
51
3.3 Schleifen
51
3.4 Ausnahmebehandlung
52
3.5 Übungsaufgaben
53
4 Datenorganisation
54
Schnelleinstieg: Datenorganisation
55
4.1 Skalare Datentypen
56
4.1.1 Zahlen- und Zeichentypen
56
4.1.2 Wahrheitswerte
58
4.1.3 Operationen
59
4.2 Konstanten und Variablen
61
4.2.1 Konstanten
61
4.2.2 Definition und Initialisierung von skalaren Variablen
62
4.2.3 Wertzuweisungen
62
4.3 Arrays
63
4.3.1 Eindimensionale Arrays
63
4.3.2 Mehrdimensionale Arrays
66
4.3.3 Zeichenketten
67
4.3.4 Arrays in C99
69
4.4 Strukturen
70
4.4.1 Grundlegende Eigenschaften von Strukturen
70
4.4.2 Strukturtypen
72
4.4.3 Schachtelung von Strukturen
72
4.5 Unions und Bitfelder
73
4.5.1 Unions
73
4.5.2 Bitfelder
74
4.6 Selbstdefinierte Wert- und Typnamen
76
4.6.1 Aufzählungstypen
76
4.6.2 Der typedef-Operator
76
4.7 Übungsaufgaben
78
5 Zeiger
80
Schnelleinstieg: Zeiger
81
5.1 Java-Objektvariablen vs. C-Zeigervariablen
82
5.2 Grundlegende Begriffe und Operatoren
84
5.2.1 Speicheradressen und Zeigervariablen
84
5.2.2 Adress- und Dereferenzierungsoperator
86
5.2.3 Zwei Programmbeispiele
88
5.2.4 Ungetypte Zeiger
89
5.3 Adressarithmetik
89
5.3.1 Operationen
89
5.3.2 Adressarithmetik bei Arrays
91
5.3.3 Exkurs: Zeichenkettenvariablen und -konstanten
94
5.4 Dynamische Speicherverwaltung
95
5.4.1 malloc()
95
5.4.1.1 Objekterzeugung in Java vs. Speicherbelegung in C
95
5.4.1.2 Definition von malloc()
96
5.4.2 free()
96
5.4.3 Arrays mit dynamisch bestimmter Größe
97
5.4.4 Zwei Programmbeispiele
98
5.5 Zeiger auf Strukturen
100
5.5.1 Arrays mit Zeigern auf Strukturen
100
5.5.2 Strukturen mit Zeigern auf Strukturen
101
5.6 Zeiger auf Zeiger
103
5.7 Übungsaufgaben
104
6 Funktionen
106
Schnelleinstieg: Funktionen
107
6.1 Java-Methoden vs. C-Funktionen
108
6.2 Schnittstellen
110
6.2.1 Prototypen
110
6.2.2 Weitere Besonderheiten von C
112
6.3 Ausführung
115
6.3.1 Ablauf
115
6.3.2 Parameterübergabe
115
6.3.2.1 Wertaufruf
116
6.3.2.2 Referenzaufruf
116
6.3.2.3 Übergabe von Arrays
118
6.3.3 Ergebnisrückgabe
120
6.4 Das Hauptprogramm main()
121
6.5 Speicherklassen
123
6.5.1 Lokale Variablen
123
6.5.1.1 Automatische Variablen
123
6.5.1.2 Statische Variablen
124
6.5.1.3 Registervariablen
125
6.5.2 Externe Variablen
125
6.5.2.1 Programme in einer einzelnen Datei
126
6.5.2.2 Programme in mehreren Dateien
127
6.5.3 Tabellarische Zusammenfassung
129
6.6 Funktionsbibliotheken
129
6.6.1 Definition und Benutzung
129
6.6.2 Die Standardbibliothek
130
6.6.2.1 Funktionen für Zeichen und Zeichenketten
131
6.6.2.2 Mathematische Funktionen
133
6.6.2.3 Betriebssystemnahe Dienste
134
6.7 Nutzungsmöglichkeiten für Fortgeschrittene
136
6.7.1 Zeiger auf Funktionen
136
6.7.2 Funktionen als Parameter
138
6.7.3 Funktionen mit variabler Anzahl von Parametern
139
6.8 Übungsaufgaben
140
7 Ein-/Ausgabe und Dateizugriffe
143
Schnelleinstieg: Ein-/Ausgabe und Dateizugriffe
144
7.1 Grundlegende Konzepte
145
7.1.1 Datenströme in Java und in C
145
7.1.2 Standarddateien
147
7.1.3 Klassen von E/A-Funktionen
147
7.2 Funktionen für die Standardein-/-ausgabe
149
7.2.1 printf(): formatierte Ausgabe
149
7.2.1.1 Grundidee
149
7.2.1.2 Allgemeine Form
150
7.2.1.3 Weitere Beispiele
150
7.2.2 scanf(): formatierte Eingabe
151
7.2.2.1 Grundidee
151
7.2.2.2 Allgemeine Form
152
7.2.2.3 Pufferung der Eingabedaten
153
7.2.2.4 Weitere Beispiele
154
7.2.3 Weitere Funktionen für Zeichen und Zeichenketten
157
7.3 Funktionen für beliebige Datenströme
158
7.3.1 Öffnen und Schließen
158
7.3.2 Ein-/Ausgabe einzelner Zeichen
161
7.3.3 Ein-/Ausgabe von Zeichenketten
162
7.3.4 Formatierte Ein-/Ausgabe
162
7.3.5 Ein-/Ausgabe beliebiger Bytefolgen
163
7.3.6 Wahlfreier Zugriff
165
7.3.7 Spezielle Funktionen
167
7.4 Operationen auf dem Dateisystem
168
7.5 Übungsaufgaben
169
8 Dynamische Datenstrukturen
170
Schnelleinstieg: Dynamische Datenstrukturen
171
8.1 Dynamische Datenhaltung in Java und in C
172
8.2 Listen
173
8.2.1 Eigenschaften
173
8.2.2 Einfach verkettete Listen
174
8.2.2.1 Typ der Knoten
174
8.2.2.2 Durchlaufen einer Liste
175
8.2.2.3 Suchen von Einträgen
176
8.2.2.4 Einfügen von Knoten
176
8.2.2.5 Entfernen von Knoten
179
8.2.3 Doppelt verkettete Listen
182
8.2.3.1 Typ der Knoten
182
8.2.3.2 Durchlaufen einer Liste
183
8.2.3.3 Suchen von Einträgen
183
8.2.3.4 Einfügen von Knoten
184
8.2.3.5 Entfernen von Knoten
186
8.2.4 Queues und Stacks
188
8.2.4.1 Queues
188
8.2.4.2 Stacks
189
8.3 Hashtabellen
189
8.3.1 Eigenschaften
190
8.3.2 Realisierung in Java und in C
190
8.4 Bäume
192
8.4.1 Eigenschaften
192
8.4.2 Binärbäume
193
8.4.2.1 Eigenschaften und Beispiele
193
8.4.2.2 Realisierung in C
195
8.4.2.3 Durchlaufen eines Binärbaums
196
8.4.2.4 Löschen eines Binärbaums
199
8.4.2.5 Suchen eines Werts in einem Suchbaum
199
8.4.2.6 Einfügen eines Werts in einen Suchbaum
199
8.4.2.7 Löschen eines Werts aus einem Suchbaum
201
8.5 Mengen
203
8.5.1 Realisierung durch Listen und Bäume
203
8.5.1.1 Grundlegende Mengenoperationen auf C-Listen
203
8.5.1.2 Bilden der Vereinigungsmenge
204
8.5.1.3 Bilden der Differenzmenge
205
8.5.1.4 Bilden der Schnittmenge
206
8.5.2 Realisierung durch Bitmaps
206
8.6 Übungsaufgaben
209
Anhang
210
A Auswertung von Ausdrücken
210
A.1 Implizite Typkonversionen
210
A.1.1 Konversionen in Rechenausdrücken
210
A.1.2 Konversionen bei Zuweisungen
211
A.2 Sequenzpunkte
213
A.3 Bindungsstärken und Auswertungsreihenfolgen
213
B Vordefinierte Konstanten
214
B.1 Wertebereiche der skalaren Typen
214
B.2 Mathematische Konstanten
215
C Standardbibliothek
216
C.1 Dateizugriffe und Ein-/Ausgabe
216
C.1.1 Thematische Übersicht über die Funktionen
216
C.1.2 Funktionen in alphabetischer Reihenfolge
218
C.2 Zeichen, Zeichenketten und Bytefolgen
230
C.2.1 Test einzelner Zeichen
230
C.2.2 Umwandlung von Zeichen
231
C.2.3 Zeichenketten
231
C.2.4 Bytefolgen/Arrays
232
C.2.5 Konversionen
233
C.3 Mathematische Funktionen
234
C.4 Betriebssystemnahe Dienste
235
C.4.1 Dynamische Speicherverwaltung
235
C.4.2 Zeitfunktionen
236
C.4.3 Weitere Funktionen
237
D Häufig gebrauchte Tabellen
238
D.1 ASCII
238
D.2 Variablengrößen und Wertebereiche
239
D.3 Bindungsstärke von Operatoren
240
D.4 Optionen für fopen()
241
D.5 Konversionsangaben für die Ein-/Ausgabe
242
D.5.1 printf()
242
D.5.2 scanf()
244
Literatur und Internet
245
Bücher
245
Standardisierungsdokumente
245
Internet-Quellen
246
Index
247
Mehr eBooks bei www.ciando.com
0