C-Programmierung unter Linux/UNIX/Windows: Beispiele, Anwendungen, Programmiertechniken
Gespeichert in:
Hauptverfasser: | , |
---|---|
Format: | Buch |
Sprache: | German |
Veröffentlicht: |
Lohmar
Millin
2014
|
Ausgabe: | 4., aktualisierte Aufl. |
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis Klappentext |
Beschreibung: | XVI, 628 S. Ill., graph. Darst. |
ISBN: | 9783938626245 3938626240 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV041470600 | ||
003 | DE-604 | ||
005 | 20141027 | ||
007 | t | ||
008 | 131210s2014 gw ad|| |||| 00||| ger d | ||
016 | 7 | |a 1044618116 |2 DE-101 | |
020 | |a 9783938626245 |c Pb. : EUR 39.90 (DE), EUR 41.10 (AT) |9 978-3-938626-24-5 | ||
020 | |a 3938626240 |9 3-938626-24-0 | ||
024 | 3 | |a 9783938626221 | |
035 | |a (OCoLC)865130438 | ||
035 | |a (DE-599)BVBBV041470600 | ||
040 | |a DE-604 |b ger |e rakddb | ||
041 | 0 | |a ger | |
044 | |a gw |c XA-DE-NW | ||
049 | |a DE-B768 |a DE-11 |a DE-859 |a DE-739 |a DE-523 |a DE-573 |a DE-91G |a DE-860 |a DE-862 |a DE-92 | ||
082 | 0 | |a 005.133 |2 22/ger | |
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
084 | |a DAT 438f |2 stub | ||
084 | |a DAT 358f |2 stub | ||
084 | |a DAT 440f |2 stub | ||
084 | |a 004 |2 sdnb | ||
100 | 1 | |a Herold, Helmut |d 1956- |e Verfasser |0 (DE-588)122454340 |4 aut | |
245 | 1 | 0 | |a C-Programmierung unter Linux/UNIX/Windows |b Beispiele, Anwendungen, Programmiertechniken |c Helmut Herold ; Jörg Arndt |
246 | 1 | 3 | |a C-Programmierung unter Linux, Unix, Windows |
246 | 1 | 3 | |a C Programmierung unter Linux, Unix, Windows |
250 | |a 4., aktualisierte Aufl. | ||
264 | 1 | |a Lohmar |b Millin |c 2014 | |
300 | |a XVI, 628 S. |b Ill., graph. Darst. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
650 | 0 | 7 | |a C |g Programmiersprache |0 (DE-588)4113195-2 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a C |g Programmiersprache |0 (DE-588)4113195-2 |D s |
689 | 0 | |5 DE-604 | |
700 | 1 | |a Arndt, Jörg |d 1964- |e Verfasser |0 (DE-588)142015806 |4 aut | |
856 | 4 | 2 | |m Digitalisierung UB Passau - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=026916747&sequence=000003&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
856 | 4 | 2 | |m Digitalisierung UB Passau - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=026916747&sequence=000004&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA |3 Klappentext |
999 | |a oai:aleph.bib-bvb.de:BVB01-026916747 |
Datensatz im Suchindex
DE-BY-862_location | 2000 |
---|---|
DE-BY-FWS_call_number | 2000/ST 250 C01 H561(4) |
DE-BY-FWS_katkey | 529918 |
DE-BY-FWS_media_number | 083000511378 |
_version_ | 1806176877643038720 |
adam_text | Inhaltsverzeichnis
1 Einführendes Beispiel 3
1.1 Erste wesentliche C-Regeln .......... 3
1.2 Zeilen-Kommentare mit//(neu in C99) ....... 5
1.3 Gute Lesbarkeit von Programmen ......... 5
1.4 Vermeiden von geschachtelten Kommentaren ...... 6
2 Elementare Datentypen 7
2.1 Die Grunddatentypen inC .......... 7
2.2 Wertebereiche für die einzelnen Datentypen ....... 9
2.3 Fallgrube: Verlust von Bits bei zu großen Zahlen ...... 10
3 Konstanten 11
3.1 char-Konstanten ............ 11
3.2 Ganzzahlige Konstanten........... 11
3.3 Gleitpunktkonstanten........... 12
4 Variablen 13
4.1 Variablen und die
С
-Regeln für Variablennamen ...... 13
4.2 Tipps zur Wahl der Variablennamen ........ 14
4.3 Deklaration von Variablen .......... 14
4.4 Tipp: Variablen bereits bei Deklaration dokumentieren .... 16
5 Ausdrücke und Operatoren 17
5.1 Der einfache Zu Weisungsoperator ......... 17
5.1.1 Allgemeines zum einfachen Zuweisungsoperator .... 17
5.1.2 Initialisierung von Variablen ........ 19
5.2 Arithmetische Operatoren.......... 19
5.2.1 Die arithmetischen Operatoren ........ 19
Inhaltsverzeichnis
5.2.2 Die C-Begriffe Ausdruck und Anweisung...... 20
5.2.3 Ausgabe von int-Variablen und -Ausdrücken ..... 21
5.2.4 Ausgabe von Gleitpunkt-Variablen und -Ausdrücken ... 21
5.2.5 Fallgrube: Ganzzahl- statt Gleitpunktdivision ..... 22
5.3 Vergleichsoperatoren........... 23
5.3.1 Die unterschiedlichen Vergleichsoperatoren ..... 23
5.3.2 Die zwei Wahrheitswerte von Vergleichen ...... 23
5.3.3 Prioritäten der Vergleichsoperatoren ....... 23
5.4 Logische Operatoren ........... 24
5.4.1
TRUE
und
FALSE
in
С
.......... 24
5.4.2 Der Datentyp _Bool (neu in C99) ....... 24
5.4.3 Die C-Operatoren für NOT, AND und
OR
im Überblick ... 25
5.4.4 Der Negations-Operator !......... 25
5.4.5 Der AND-Operator &&......... 26
5.4.6 Der OR-Operator 11.......... 26
5.4.7 Die Priorität der logischen Operatoren ...... 26
5.4.8 Keine unnötige Auswertung rechts von &&und 11 .... 17
5.4.9 Übung: Überprüfungen mit logischen Operatoren .... 28
5.5 Bit-Operatoren............. 28
5.5.1 Bitweise Invertierung mit ~ ......... 28
5.5.2 Bitweise AND-Verknüpf
ung
mit &....... 30
5.5.3 Bitweise
OR-
Verknüpfung mit |........ 31
5.5.4 Bitweise XOR-Verknüpfung mit
л
....... 33
5.5.5 Bit-Operatoren nur für ganzzahlige Datentypen erlaubt ... 34
5.5.6 Fallgruben............ 34
5.5.7 Übung: Überprüfungen mit Bit-Operatoren..... 36
5.6 Shift-Operatoren............ 37
5.6.1 Die beiden Shift-Operatoren <<und >>...... 37
5.6.2 Shift-Operatoren nur für ganzzahlige Datentypen erlaubt . . 38
5.6.3 Priorität der Shift-Operatoren........ 38
5.7 Zusammengesetzte Zuweisungsoperatoren ....... 39
5.7.1 Die zusammengesetzten Zuweisungsoperatoren .... 39
5.8 Inkrement- und Dekrement-Operatoren ........ 40
5.8.1 Inkrementieren und Dekrementieren mit++und-- .... 40
5.8.2 Präfix-und Postfix-Schreibweise für++und-- ..... 40
5.8.3 ++und--ist nur für Variablen erlaubt...... 42
5.8.4 ++und--ist nicht auf linken Seite einer Zuweisung erlaubt . . 42
VI
Inhaltsverzeichnis
5.9 Prioritätstabelle für Operatoren......... 42
5.10 Assoziativität der Operatoren.......... 43
5.11 Erlaubte und unerlaubte Operationen für C-Datentypen .... 43
5.12 Priorität und Auswertungszeitpunkt bei ++ und -- ..... 43
5.13 Fallgrube: Zugriff auf nicht vorbesetzte Variablen ...... 45
5.14 Übungen............. . 46
6 Symbolische Konstanten 47
6.1 Konstanten-Definition mit #define ......... 47
6.1.1 Die Direktive #define.......... 47
6.1.2 Regeln für Konstanten-Namen bei #define ...... 49
6.1.3 Konstanten machen Programm leicht änderbar ..... 49
6.2 Konstanten-Definition mit
const
......... 49
7 Ein- und Ausgabe 51
7.1 Headerdateien und #include......... . 51
7.1.1 Bibliotheken und Headerdateien ....... 51
7.1.2 Eigene Headerdateien .......... 52
7.2 Ein- und Ausgabe eines Zeichens ......... 53
7.2.1 getcharO und putcharO ......... 53
7.2.2 Gepufferte Eingabe bei getchar() ........ 53
7.2.3 Puffer-Bereinigung mit
Dummy getchar()
...... 57
7.2.4 Puffer-Bereinigung ist nicht immer notwendig ..... 58
7.2.5 Fallgrube: Zahlen nicht mit getchar() einlesen ..... 60
7.2.6 Die Headerdatei <ctype.h>....... 60
7.2.7 Einfache Makros........... 62
7.3 Die Ausgabe mit printf()........... 67
7.3.1 Die Funktion printfO.......... 67
7.3.2 Fallgruben............ 74
7.3.3 Tipps............. 75
7.4 Die Eingabe mit scanf()........... 77
7AA Die Funktion scanf().......... 77
7.4.2 Fallgruben............ 83
7.4.3 Die Headerdatei <math.h>......... 86
7.4.4 Fallgrube: Vergessen von #include <math.h> ..... 88
8 Datentypumwandlungen 91
8.1 Implizite Datentypumwandlungen ........ 91
VII
Inhaltsverzeichnis
8.1.1 Der
sizeof-Operator
.......... 91
8.1.2 Implizite DatentypumWandlungen....... 93
8.1.3 Fallgrube: Zuweisen von Ganzzahlausdrücken an Gleitpunktvariablen 97
8.2 Explizite Datentypumwandlungen ......... 98
8.2.1 Explizite Datentypumwandlungen mit
cast-Operator
... 98
8.2.2 Fallgruben............ 98
9 Die Headerdateien <limits.h und <float.h> 101
9.1 <limits.h> - Grenzwerte von Ganzzahltypen ...... 101
9.2 <float.h> — Grenzwerte von Gleitpunkt-Datentypen ..... 102
10 Anweisungen und Blöcke 103
11 Die if-Anweisung 105
11.1 Die zweiseitige if-Anweisung .......... 105
11.2 Die einseitige if-Anweisung .......... 110
11.3 Verschachtelte
if-
Anweisungen ......... 112
11.4 Tipp: Einrücken untergeordneter Programmteile ...... 113
11.5 Fallgruben ............. 114
11.5.1 Falsche Gleichheitsüberprüfung ........ 114
11.5.2 Keine unnötige Auswertung rechts von && und
II.
. . . 115
11.5.3 Vergleiche von negativen Zahlen mit
unsigned-
Variablen . . 116
11.5.4 Hohe Priorität des Negations-Operators ! . . . . . 116
11.6 Programmiertechniken ........... 117
11.6.1 if-Kaskaden............ 117
12 Die bedingte Bewertung ?: 119
13 Die switch-Anweisung 121
13.1 Die switch-Anweisung ........... 121
13.2 Fallgrube:
case-Marken
müssen ganzzahlige Konstanten sein . . . 125
13.3 Tipps............... 126
13.3.1 Alle
case-Marken
(auch letzte) mit
break
abschließen . . . 126
13.3.2 default immer angeben ......... 126
14 Der Komma-Operator 127
14.1 Der Komma-Operator........... 127
14.2 Komma-Operator hat die niedrigste Priorität ...... 128
VIII
Inhaltsverzeichnis
15 Die
for-
Anweisung 129
15.1 Die
f
or-
Anweisung............ 129
15.2 Die for-Schleife und der Komma-Operator....... 133
15.3 Fallgrube: Semikolon am Ende des for-Schleifenkopfs..... 136
15.4 Geschachtelte Schleifen........... 137
15.5 Eine endlose for-Schleife........... 143
15.6
for
bei Durchläufen mit festen Schrittweiten....... 143
15.7 Variablendeklaration im for-Schleifenkopf (neu in C99) .... 146
15.8 Programmiertechniken ........... 146
15.8.1 Anhalten einer Bildschirmausgabe ....... 146
15.8.2 Zeilenvorschübe bei geschachtelten Schleifen ..... 149
15.8.3 Kombinieren mit for-Schleifen ........ 150
15.8.4 Zwischeninformationen bei
rechenintensiven
Programmen . . 152
15.8.5 Merker in for-Schleifen bei Eintreten von Ereignissen . . . 153
15.9 Fallgruben ............. 154
15.9.1 Niemals die Laufvariable im Schleifenkörper ändern . . . 154
15.9.2 Gleitpunktzahlen niemals auf Gleichheit prüfen .... 157
15.9.3 Laufvariable einer for-Schleife läuft über Endwert hinaus . . 159
16 Die while-Anweisung 161
16.1 Die while-Anweisung ........... 161
16.2 Programmiertechniken ........... 163
16.2.1
while
bei unbekannter Zahl von Schleifendurchläufen . . . 163
16.2.2 Konsistenzprüfungen bei Eingaben ....... 165
16.2.3 Die Konstante eof .......... 166
16.2.4 Minimum und Maximum in einer Zahlenfolge ..... 167
16.3 Zufallszahlen in
С
............ 168
T7 Die
do.
..
while-
Anweisung 175
17.1 Die
do.
.. while-Anweisung .......... 175
17.2 Programmiertechniken ........... 177
17.2.1
do.
.. while-Schleifen nicht so oft wie while-Schleifen . . . 177
17.2.2 Abschließendes }
while
immer in einer Zeile .... 178
18 Die
break-
Anweisung 179
18.1 Die break-Anweisung........... 179
18.2
break
bewirkt Verlassen einer Schleifenebene ...... 180
18.3 Programmiertechniken ........... 180
IX
Inhaltsverzeichnis
18.3.1 Sofortiges Verlassen von Schleifen und
switch
..... 180
18.3.2 Endlosschleifen und
break
......... 182
19 Die
continue-Anweisung
183
19.1 Die continue-Anweisung ........... 183
19.2 Programmiertechniken ........... 184
19.2.1
continue
nur im äußersten Notfall....... 184
19.2.2 Korrekte Programme müssen auch schnell sein..... 185
19.3 Datums- und Zeitangaben (<time.h>)........ 189
19.3.1 Konstanten und Datenytpen........ 189
19.3.2 Funktionen............ 189
19.3.3 Beispiele zu Funktionen aus <time.h>...... 192
20 Marken und die goto-Anweisung 197
20.1 Marken und die goto-Anweisung . . . . . . . . . 197
20.2 Programmiertechniken ........... 197
20.2.1 goto nur im äußersten Notfall........ 197
20.2.2 Lesbarere und schnellere Programme mit goto..... 198
21 Grafikprogrammierung unter Linux 199
21.1 Benutzung von LCGI........... 199
21.2 Grafikmodus ein- und ausschalten ......... 200
21.3 Eingaben im Grafikmodus .......... 200
21.4 Bildschirm-, Farben- und Pixel-Operationen ....... 204
21.5 Positionieren, Linien zeichnen und Farbe einstellen ..... 207
21.6 Figuren zeichnen und ausfüllen ......... 209
21.7 Einstellungen für Textausgaben ......... 215
21.8 Bilder laden, Bildteile speichern und einblenden ...... 217
21.9 Kuchenstücke malen ........... 220
21.lOGrafikpaket neu bzw. anders einrichten ........ 222
21.11 Arbeiten mit mehreren Zeichenfenstern ........ 223
21.12Programmierung der Maus .......... 223
21.^Transformation mathematischer Koordinaten ...... 226
22 Funktionen 231
22.1 Allgemeines zu Funktionen .......... 231
22.1.1 Allgemeines Beispiel zu Funktionen ....... 231
22.1.2 Die Begriffe Parameter und Argumente...... 233
X
Inhaltsverzeichnis
22.1.3 Bibliotheken und Headerdateien ....... 233
22.2 Erstellen eigener Funktionen .......... 234
22.2.1 Definition von Funktionen in C89/C99...... 234
22.2.2 Definition von Funktionen in Alt-C....... 237
22.2.3 Die return-Anweisung.......... 238
22.2.4 Funktionen ohne Rückgabewert........ 238
22.2.5
Forward-Deklarationen
......... 239
22.2.6
Funktions-Prototypen..........
242
22.2.7 Implizite Datentypumwandlung beim Funktionsaufruf . . . 246
22.2.8 Typische Anwendungsgebiete von Funktionen ..... 248
22.3 Die Parameter von Funktionen ......... 253
22.3.1 Leere Parameterliste durch Angabe von
void
..... 253
22.3.2 Bei Funktionsaufrufen findet nur Wertübergabe statt . . . 253
22.3.3
Call by reference...........
258
22.3.4 Auswertung der Argumente findet vor Funktionsaufruf statt . . 260
22.3.5 Fallgruben............ 261
22.4 Ellipsen-Prototypen für Funktionen mit variabler Argumentzahl . . 263
22.4.1 Reihenfolge der Argument-Ablage im Stack ..... 263
22.4.2 Ellipsen-Prototypen.......... 264
22.4.3 Abarbeiten variabel langer Argumentlisten ..... 264
22.4.4 Verfahren zum Abarbeiten variabel langer Argumentlisten . . 265
22.4.5 Fallgruben............ 269
22.5 Neuheiten in C99............ 270
22.5.1 Inline-Funktionen .......... 270
22.5.2 Der vordefinierte Name__
fune
__....... 271
22.5.3 Keine Unterstützung von implizitem int ...... 272
22.5.4 Keine impliziten Funktionsdeklarationen ...... 272
22.5.5 Einschränkungen bei
return
........ 272
22.6 Rekursive Funktionen........... 273
22.6.1 Allgemeines zu rekursiven Funktionen ...... 273
22.6.2 Einige typische Anwendungen für die Rekursion .... 276
22.7 Zeiger auf Funktionen........... 280
22.7.1 Zeiger auf Funktionen.......... 280
22.7.2 Typische Anwendungen ......... 283
23 Speicherklassen und Modultechnik 287
23.1 Gültigkeitsbereich, Lebensdauer, Speicherort ...... 287
XI
Inhaltsverzeichnis
23.1.1 Gültigkeitsbereich .......... 287
23.1.2 Lebensdauer............ 291
23.1.3 Speicherort............ 292
23.1.4 Gültigkeit, Lebensdauer und Speicherort im Überblick . . . 292
23.1.5 Übung: Ausgabe des Programms
ЫоскЗ
.
с
..... 293
23.2 Schlüsselwörter
extern, auto, static
und
register
...... 293
23.2.1 Das Schlüsselwort extern......... 293
23.2.2 Das Schlüsselwort
auto
......... 296
23.2.3 Fallgrube: Niemals Adressen von auto-Variablen zurückgeben . 303
23.2.4 Das Schlüsselwort
static
......... 304
23.2.5 Das Schlüsselwort
register
......... 310
23.3 Die Schlüsselwörter
const
und
volatile
........ 310
23.3.1 Das Schlüsselwort
const
......... 310
23.3.2 Das Schlüsselwort
volatile
......... 312
23.3.3 Kombination von
const
und
volatile
....... 313
23.4 Modultechnik und Information
Hiding
........ 314
23.4.1 Linker und Compiler.......... 317
23.4.2 Beispiel: Simulation von Turingmaschinen ..... 319
24 Präprozessor-Direktiven 331
24.1 Bedingte Kompilierung........... 332
24.1.1 Präprozessor-Direktiven zur bedingten Kompilierung . . . 332
24.1.2 Typische Anwendungen ......... 334
24.1.3 Testen mit Makro assert() aus Headerdatei <assert.h> . . . 339
24.2 Einkopieren von anderen Headerdateien ....... 340
24.2.1 Die Präprozessor-Direktive #include ....... 340
24.2.2 Typische Anwendungen ......... 341
24.3 Definition von Makros (#define und #undef)....... 342
24.3.1 Definition von Konstanten mit #define ...... 342
24.3.2 Definition von Funktionsmakros mit #define..... 343
24.3.3 Operator #: Ersetzung von Makroparametern durch
String
. . 345
24.3.4 Operator ##: Zusammensetzen neuer Namen..... 346
24.3.5 Rekursive Makrodefinitionen ........ 346
24.3.6 Makros mit variabler Anzahl von Argumenten (neu in C99) . . 348
24.3.7 Makrodefinitionen mit #undef wieder aufheben .... 349
24.3.8 Unterschiede zwischen Funktionen und Makros .... 349
24.4 Vordefinierte Makronamen.......... 353
XII
Inhaltsverzeichnis
24.5 Die restlichen Präprozessor-Direktiven........ 354
24.5.1 #line — Festlegen einer neuen Zeilennumerierung .... 354
24.5.2 #error — Ausgeben von Fehlermeldungen ...... 355
24.5.3 #pragma — Festlegen von compilerspezifischem Verhalten . . 355
24.5.4 #-Die Null-Direktive.......... 355
25 Zeiger und
Arrays
357
25.1 Eindimensionale
Arrays
........... 357
25.1.1 Eindimensionale
Arrays
......... 357
25.1.2 Nur statische
Arrays
erlaubt (in C89)....... 361
25.1.3 Von
Arrays
belegter Speicherplatz ....... 362
25.1.4 Fallgruben............ 363
25.2 Mehrdimensionale
Arrays
.......... 365
25.2.1 Zweidimensionale
Arrays
......... 365
25.2.2 Drei-, vier-, fünf- und sonstige mehrdimensionale
Arrays
. . 373
25.2.3 sizeof liefert die Größe eines
Arrays
....... 373
25.3 Zusammenhänge zwischen
Arrays
und Zeigern ...... 374
25.3.1 Arrayname ist konstanter Zeiger auf erstes Element .... 374
25.3.2 Zugriff auf Arrayelemente ist auch über Zeiger möglich . . . 377
25.3.3 Unterschied zwischen Arraynamen und echtem Zeiger . . . 380
25.3
A
Erlaubte Operationen mit Zeigern ....... 381
25.3.5 Unerlaubte Operationen mit Zeigern ....... 381
25.3.6 Übergabe eines
Arrays
an eine Funktion mittels Adresse . . . 384
25.3.7
call by value
für
Arrays
(Zeiger)........ 388
25.3.8 Nachlese zu
Arrays
und Zeiger ........ 389
25.3.9 Algorithmus: Der
Bubble-Sort
........ 389
25.3.10 Verwendung der Bibliotheksfunktion qsort() ..... 390
25.4
Strings
und char-Zeiger ........... 392
25.4.1 Besonderheiten von C-Strings ........ 392
25.4.2 Das Schlüsselwort
restrict
für Zeiger (neu in C99) .... 394
25.4.3 Eigene Realisierung der Funktion strcpy() mit
Arrays
. . . 394
25.4.4 Eigene Realisierung der Funktion strcpy() mit Zeigern . . . 395
25.4.5 Die Headerdatei <string.h>......... 398
25.4.6 Umwandeln von
Strings in
numerische Werte ..... 413
25.4.7 Umwandeln von numerischen Werten in
Strings
.... 419
25.4.8 Besonderheiten beim Einlesen von
Strings
mit scanf() . . . 421
25.4.9 Ein- und Ausgabe von
Strings
mit getsQ und putsQ .... 422
XIII
Inhaltsverzeichnis
25.4.10 Unterschied zwischen Zeiger-und Array-Deklaration . . . 423
25.4.11 Direkter Zugriff auf Zeichen in einer String-Konstante . . . 425
25.5 Array-Initialisierungen ........... 426
25.5.1 Initialisierung von
Arrays
......... 426
25.5.2 Dimensionierungsangaben bei der Initialisierung .... 428
25.5.3 Zeiger auf unbenamte
Arrays
(neu in C99) ..... 429
25.5.4 Implizite Initialisierung bei
sta tic-
Variablen/
Arrays
.... 430
25.5.5 Initialisierung lokaler Variablen auch mit Nicht-Konstanten . . 431
25.5.6 Initialisierung von lokalen
Arrays
in C89/C99..... 432
25.5.7 Initialisierung von lokalen
Arrays
mit variablen Werten (neu in C99) 432
25.5.8 Initialisierung von lokalen
Arrays
mit 0 oder NULL .... 433
25.5.9 Initialisierte
Arrays
mit
const
vor Überschreiben schützen . . 434
25.6 Lokale
Arrays
variabler Länge (neu in C99) ....... 435
25.7 Zeigerarrays und Zeiger auf Zeiger ........ 436
25.7.1 Einfache Zeigerarrays .......... 436
25.7.2 Zeiger auf
Arrays
........... 437
25.7.3 Vertauschen von zwei
Arrays
über Zeiger ...... 438
25.7.4 Übergabe von
Arrays an
Funktionen ....... 440
25.7.5 Zeiger-Zeiger ........... 441
25.7.6 Unterschiede bei zweidimensionalen
Arrays
und Zeigerarrays . 442
25.7.7 Zugriff auf beliebige Elemente in einem Zeigerarray . . . 445
25.7.8 Zeigerarrays mit Funktionsadressen ....... 451
26 Argumente auf der Kommandozeile 453
26.1 Die Parameter arge und argv der Funktion main() ..... 453
26.2 Optionen auf der Kommandozeile ......... 456
27 Dynamische Speicher-Reservierung und-Freigabe 463
27.1 Nachteile von statischen
Arrays
......... 463
27.1.1 Gefahr der Speicherüberschreibung....... 464
27.1.2 Speicherplatzvergeudung ......... 465
27.2 Speicher reservieren mit malloc() ......... 466
27.2.1 Die Funktion mallocO.......... 466
27.2.2 Dynamische
Arrays
für beliebige Datentypen ..... 470
27.2.3 Konvertierung von void-Zeigern ....... 473
27.3 Speicher reservieren und initialisieren mit callocO ..... 474
27.4 Größenänderung eines allozierten Speichers mit reallocQ .... 475
XIV
Inhaltsverzeichnis
27.4.1 Die Funktion reallocO.......... 475
27.4.2 Besonderheiten der Funktion reallocO ...... 478
27.4.3 Schnellere Programme mit größeren Speicherblöcken . . . 479
27.5 Freigeben von dynamisch reservierten Speicherbereich . . . . 481
27.5.1 Die Funktion free().......... 481
27.5.2 Fallgrube: free() setzt übergebenen Zeiger nicht auf NULL . . 481
27.5.3 Tipp: Eigenes Makro zur Freigabe von dynamischen Speicher . . 483
27.6 Fallgruben ............. 484
27.6.1 free() nur auf von mallocO, callocO und reallocO gelieferte Zeiger . 484
27.6.2 Allozieren von Speicherplatz in einer Funktion ..... 485
27.7 Programmiertechnik: Dynamische Zeiger-
Arrays
...... 488
27.8 Fallgrube: free() bei Zeiger-Arrays........ . 489
28 Strukturen 491
28.1 Deklaration und Definition von Strukturen ....... 491
28.1.1 Deklaration von Strukturen......... 491
28.1.2 Wichtige Regeln und Hinweise für Strukturdeklarationen . . 492
28.1.3 Definition von Strukturvariablen ....... 493
28.1.4 Zusammenfassung von Strukturdeklaration und
-definition
. . 494
28.1.5 Namenlose Strukturen.......... 495
28.2 Operationen mit Strukturvariablen........ 496
28.2.1 Zugriff auf Strukturkomponenten mittels Punktoperator . . . 496
28.2.2 Zuweisung zwischen Strukturkomponenten ..... 497
28.2.3 Zuweisung ganzer Strukturvariablen ....... 502
28.2.4 Vergleich von Strukturvariablen ist nicht möglich .... 502
28.2.5 Casting für komplette Strukturvariable ist nicht möglich . . . 503
28.2.6 Adreß- und sizeof-Opera
tor
für Strukturvariablen erlaubt . . 503
28.3 Initialisierung von Strukturvariablen ........ 504
28.3.1 Initialisierung von Strukturvariablen in C89 und C99 . . . 504
28.3.2 Initialisierung von Strukturvariablen (nur in C99) .... 505
28.4 Struktur
arrays
............. 507
28.5 Strukturen als Funktionsparameter ........ 514
28.6 Zeiger und Strukturen ........... 516
28.6.1 Allgemeines zu Zeiger und Strukturen . . . . . . 516
28.6.2 Dynamische Strukturarrays ........ 522
28.6.3 Rekursive Strukturen.......... 529
28.7 Strukturen mit variabel langen
Arrays
(neu in C99) ..... 558
XV
Inhaltsverzeichnis
28.8 Spezielle Strukturen
(Unions
und Bitfelder)....... 559
28.8.1
Unions
............. 559
28.8.2 Bitfelder ............ 564
29 Eigene Datentypen 569
29.1 Definition eigener Datentypnamen mit typedef...... 569
29.1.1 Vergabe neuer Namen an existierende Datentypen mit typedef . 569
29.1.2 Höhere Portabilität und bessere Lesbarkeit durch typedef . . 572
29.2 Definition eigener Datentypen mit enum ....... 573
29.2.1 Definition eigener Datentypen mit enum ...... 573
29.2.2 Regeln für enum........... 575
30 Dateien 577
30.1 Höhere E/A-Funktionen........... 577
30.1.1 Vordefinierte Struktur FILE......... 578
30.1.2 Öffnen und Schließen von Dateien....... 578
30.1.3 Lesen und Schreiben in Dateien........ 580
30.1.4 Unterschied zwischen Text-und Binärmodus..... 596
30.1.5 Positionieren in Dateien ......... 598
30.1.6 Öffnen einer Datei mit existierenden
Stream
..... 601
30.1.7 Löschen und Umbenennen von Dateien ...... 603
30.1.8 Pufferung............ 603
30.1.9 Temporäre Dateien .......... 605
30.1.10 Ausgabe von System-Fehlermeldungen ...... 608
31 Anhang 613
31.1 Prioritätstabelle für die Operatoren ........ 613
31.2 C-Schlüsselwörter............ 613
31.3 Wertebereiche für die einzelnen Datentypen ....... 614
31.4 Die Funktion printf() ........... 615
31.5 Die Funktion scanfO ........... 617
31.6 ASCII-Tabelle............. 619
XVI
Dieses Buch beschreibt die Programmiersprache
С
anhand vie¬
ler anschaulicher Beispiele, die ausführlich mit Programmcode
vorgestellt werden. Von Anfang an geht dieses Buch dabei in¬
tensiv auf C99, den aktuellen Standard für C, ein.
Die Autoren begnügen sich jedoch nicht allein mit der Vorstel¬
lung der einzelnen Sprachelemente, sondern vermitteln auch
Einblicke in wichtige Grundlagen der Informatik. Darüber hin¬
aus werden zu den einzelnen C-Konstruktionen effektive Pro¬
grammiertechniken aus der Praxis und typische Anwen¬
dungsgebiete der Programmiersprache
С
im Detail vorgestellt.
Zu den wichtigsten Themen finden sich in dem Buch zudem
vielfältige Tipps sowie Hinweise zur Vermeidung von Fallgru-
ben , die in
С
leider nicht allzu selten sind.
Diese Grundkenntnisse bilden das Fundament, das für eine er¬
folgreiche Programmierung in
С
unverzichtbar ist.
Ein eigenes Kapitel ist der Graphikbibliothek LCGI (Linux
С
Gra¬
phics Interface) gewidmet, die eigens im Rahmen dieses Bu¬
ches entwickelt wurde. Mit LCGI ist nunmehr eine einfache
Graphikprogrammierung in
С
unter Linux möglich.
Mit diesem Buch wird:
- der
С
-Neuling systematisch vom C-Basiswissen bis hin zu den
fortgeschrittenen Techniken der Programmierung geführt und
- dem bereits erfahrenen C-Programmierer - aufgrund der Viel¬
zahl von Tipps, fundamentalen Algorithmen und nützlichen
Programmiertechniken - eine Vertiefung bzw. Ergänzung sei¬
nes
С
-Wissens ermöglicht
|
any_adam_object | 1 |
author | Herold, Helmut 1956- Arndt, Jörg 1964- |
author_GND | (DE-588)122454340 (DE-588)142015806 |
author_facet | Herold, Helmut 1956- Arndt, Jörg 1964- |
author_role | aut aut |
author_sort | Herold, Helmut 1956- |
author_variant | h h hh j a ja |
building | Verbundindex |
bvnumber | BV041470600 |
classification_rvk | ST 250 |
classification_tum | DAT 438f DAT 358f DAT 440f |
ctrlnum | (OCoLC)865130438 (DE-599)BVBBV041470600 |
dewey-full | 005.133 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.133 |
dewey-search | 005.133 |
dewey-sort | 15.133 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
edition | 4., aktualisierte Aufl. |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>02181nam a2200481 c 4500</leader><controlfield tag="001">BV041470600</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20141027 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">131210s2014 gw ad|| |||| 00||| ger d</controlfield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">1044618116</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9783938626245</subfield><subfield code="c">Pb. : EUR 39.90 (DE), EUR 41.10 (AT)</subfield><subfield code="9">978-3-938626-24-5</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">3938626240</subfield><subfield code="9">3-938626-24-0</subfield></datafield><datafield tag="024" ind1="3" ind2=" "><subfield code="a">9783938626221</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)865130438</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV041470600</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rakddb</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">ger</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">gw</subfield><subfield code="c">XA-DE-NW</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-B768</subfield><subfield code="a">DE-11</subfield><subfield code="a">DE-859</subfield><subfield code="a">DE-739</subfield><subfield code="a">DE-523</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-91G</subfield><subfield code="a">DE-860</subfield><subfield code="a">DE-862</subfield><subfield code="a">DE-92</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.133</subfield><subfield code="2">22/ger</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 438f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 358f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 440f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">004</subfield><subfield code="2">sdnb</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Herold, Helmut</subfield><subfield code="d">1956-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)122454340</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">C-Programmierung unter Linux/UNIX/Windows</subfield><subfield code="b">Beispiele, Anwendungen, Programmiertechniken</subfield><subfield code="c">Helmut Herold ; Jörg Arndt</subfield></datafield><datafield tag="246" ind1="1" ind2="3"><subfield code="a">C-Programmierung unter Linux, Unix, Windows</subfield></datafield><datafield tag="246" ind1="1" ind2="3"><subfield code="a">C Programmierung unter Linux, Unix, Windows</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">4., aktualisierte Aufl.</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Lohmar</subfield><subfield code="b">Millin</subfield><subfield code="c">2014</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XVI, 628 S.</subfield><subfield code="b">Ill., graph. Darst.</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">C</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4113195-2</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">C</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4113195-2</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Arndt, Jörg</subfield><subfield code="d">1964-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)142015806</subfield><subfield code="4">aut</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Passau - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=026916747&sequence=000003&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Passau - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=026916747&sequence=000004&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Klappentext</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-026916747</subfield></datafield></record></collection> |
id | DE-604.BV041470600 |
illustrated | Illustrated |
indexdate | 2024-08-01T11:28:17Z |
institution | BVB |
isbn | 9783938626245 3938626240 |
language | German |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-026916747 |
oclc_num | 865130438 |
open_access_boolean | |
owner | DE-B768 DE-11 DE-859 DE-739 DE-523 DE-573 DE-91G DE-BY-TUM DE-860 DE-862 DE-BY-FWS DE-92 |
owner_facet | DE-B768 DE-11 DE-859 DE-739 DE-523 DE-573 DE-91G DE-BY-TUM DE-860 DE-862 DE-BY-FWS DE-92 |
physical | XVI, 628 S. Ill., graph. Darst. |
publishDate | 2014 |
publishDateSearch | 2014 |
publishDateSort | 2014 |
publisher | Millin |
record_format | marc |
spellingShingle | Herold, Helmut 1956- Arndt, Jörg 1964- C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken C Programmiersprache (DE-588)4113195-2 gnd |
subject_GND | (DE-588)4113195-2 |
title | C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken |
title_alt | C-Programmierung unter Linux, Unix, Windows C Programmierung unter Linux, Unix, Windows |
title_auth | C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken |
title_exact_search | C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken |
title_full | C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken Helmut Herold ; Jörg Arndt |
title_fullStr | C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken Helmut Herold ; Jörg Arndt |
title_full_unstemmed | C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken Helmut Herold ; Jörg Arndt |
title_short | C-Programmierung unter Linux/UNIX/Windows |
title_sort | c programmierung unter linux unix windows beispiele anwendungen programmiertechniken |
title_sub | Beispiele, Anwendungen, Programmiertechniken |
topic | C Programmiersprache (DE-588)4113195-2 gnd |
topic_facet | C Programmiersprache |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=026916747&sequence=000003&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=026916747&sequence=000004&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT heroldhelmut cprogrammierungunterlinuxunixwindowsbeispieleanwendungenprogrammiertechniken AT arndtjorg cprogrammierungunterlinuxunixwindowsbeispieleanwendungenprogrammiertechniken AT heroldhelmut cprogrammierungunterlinuxunixwindows AT arndtjorg cprogrammierungunterlinuxunixwindows |
Inhaltsverzeichnis
THWS Schweinfurt Zentralbibliothek Lesesaal
Signatur: |
2000 ST 250 C01 H561(4) |
---|---|
Exemplar 1 | ausleihbar Verfügbar Bestellen |