lehrerbibliothek.deDatenschutzerklärung
C ENT-PACKT
C
ENT-PACKT




Herbert Schildt

mitp-Verlag
EAN: 9783826607325 (ISBN: 3-8266-0732-5)
608 Seiten, paperback, 18 x 24cm, 2001

EUR 39,95
alle Angaben ohne Gewähr

Umschlagtext
Dieses Buch behandelt detailliert alle Aspekte der Sprache C, Befehle, Funktionen und Klassenbibliotheken, Algorithmen und Applikationen. Zahlreiche Tipps für effizientes und produktives Programmieren sowie viele Beispiele aus erfahrener Hand machen dieses Werk zu einem unverzichtbaren Begleiter für alle C-Programmierer. Herbert Schildt beantwortet Ihnen alle speziellen Fragen zu C.

C Ent-Packt ist in sechs Teile gegliedert: Teil l bietet eine gründliche Diskussion der Schlüsselwörter, Präprozessordirektiven und Features, die die Sprache C definieren. Teil II beschreibt im Detail die von C99 hinzugefügten Features. Teil III befasst sich mit der Standard-C-Bibliothek. Teil IV behandelt einige der allgemeineren und wichtigeren Anwendungen, die alle C-Programmierer in Ihrem Werkzeugkasten haben sollten. Teil V untersucht die C-Programmierumgebung, inklusive solcher Punkte wie Effizienz, Porting und Debugging und in Teil VI schließlich wird die Erstellung eines C-Interpreters erläutert.



Herbert Schildt, weltweit führender Autor von Fachbüchern für Programmierer und Mitglied des ANSI/ISO Komitees, liefert in diesem Buch die neuesten Entwicklungen des ANSI/ISO-Standards, inklusive C99.



Aus dem Inhalt:

• Die grundlegenden Elemente von C:

Datentypen, Anweisungen, Arrays und Strings, Zeiger, Funktionen, Datei I/O, der Präprozessor und Kommentare

• Detaillierte Erläuterungen aller Schlüssel wörter, Datentypen und Operatoren

• Beschreibung aller neuen von C99 hinzugefügten Features wie Arrays variabler Länge, beschränkte Zeiger, neue Bibliotheken und Header, der Datentyp long long u a.

• Alle Elemente der C- Standardbibliothek

• Algorithmen und Anwendungsbeispiele

• Die C-Programmierumgebung, inklusive Effizienz, Porting und Debugging

• Entwicklung eines C-Interpreters

• Zahlreiche Tipps für effizientes Programmieren



Alle Quellcode-Beispiele können Sie sich kostenlos aus dem Web downloaden!
Inhaltsverzeichnis
Vorwort 19

Teil I Die Grundlagen von C 23

Kapitel 1: Ein Überblick über C 25
Die Ursprünge von C 25
C ist eine Middle-Level-Sprache 26
C ist eine strukturierte Sprache 27
C ist eine Programmierersprache 29
Compiler und Interpreter 29
Die Form eines C-Programms 30
Die Bibliothek und das Linking 32
Getrennte Kompilierung 32
Ein Programm kompilieren 32
Die Speicherabbildung von C 33
C und C++ 34
Wiederholung von Begriffen 34

Kapitel 2: Ausdrücke 35
Die grundlegenden Datentypen 35
Modifizieren der Grundtypen 36
Bezeichnernamen 37
Variablen 38
Die vier Gültigkeitsbereiche von C 43
Typ-Qualifier 43
Speicherklassen-Specifier 45
static-Variablen 47
Variableninitialisierungen 51
Konstanten 51
Operatoren 53
Ausdrücke 68

Kapitel 3: Anweisungen 71
True und false in C 71
Selektionsanweisungen 72
Iterationsanweisungen 81
Sprunganweisungen 90
Ausdrucksanweisungen 94
Blockanweisungen 95

Kapitel 4: Arrays und Strings 97
Eindimensionale Arrays 97
Einen Zeiger auf ein Array erzeugen 99
Eindimensionale Arrays an Funktionen übergeben 99
Strings 100
Zweidimensionale Arrays 102
Mehrdimensionale Arrays 106
Zeiger indizieren 107
Array-Initialisierung 109
Arrays variabler Länge 111
Ein Tic-Tac-Toe-Beispiel 111

Kapitel 5: Zeiger 115
Was sind Zeiger? 115
Zeigervariablen 115
Die Zeigeroperatoren 116
Zeigerausdrücke 117
Zeigervergleiche 120
Zeiger und Arrays 121
Mehrfache Indirektion 123
Zeiger initialisieren 125
Zeiger auf Funktionen 127
Die dynamischen Belegungsfunktionen von C 129
restrict-qualifizierte Zeiger 133
Probleme mit Zeigern 133

Kapitel 6: Funktionen 137
Die allgemeine Form von Funktionen 137
Der Gültigkeitsbereich einer Funktion 138
Funktionsargumente 138
arge und argv - Argumente für main() 143
Die return-Anweisung 146
Was liefert main() zurück? 150
Rekursion 150
Funktionsprototypen 152
Parameterlisten variabler Länge deklarieren 155
Die implizite int-Regel 155
Funktionsparameterdeklarationen im alten und im neuen Stil 156
Das Schlüsselwort inline 157

Kapitel 7: Strukturen, Unions, Aufzählungen und typedef 159
Strukturen 159
Arrays aus Strukturen 162
Strukturen an Funktionen übergeben 168
Strukturzeiger 170
Arrays und Strukturen in Strukturen 173
Unions 174
Bit-Felder 176
Aufzählungen 178
Ein wichtiger Unterschied zwischen C und C++ 180
Die Verwendung von sizeof zur Sicherung der Portabilität 181
typedef 182
KopitelS: Konsolen-l/O 183
Characters lesen und schreiben 184
Strings lesen und schreiben 186
Formatierter Konsolen-I/O 188
printf() 188
scanf() 195

Kapitel 9: Datei-l/0 203
C- und C++-Datei-I/O 203
Standard-C- und Unix-Datei-I/O 203
Streams und Dateien 204
Grundlagen des Dateisystems 205
fread() und fwrite() 215
fseek() und I/O im wahlfreien Zugriff 222
fprintf() und fscanf() 223
Die Standard-Streams 224

Kapitel 10: Der Präprozessor und Kommentare 229
Der Präprozessor 229
tdefine 229
Funktionen-Makros definieren 231
#error 232
#include 232
Bedingte Kompilierungsdirektiven 232
#if, #else, #elif und #endif 233
#undef 236
Die Verwendung von defined 236
#line 237
#pragma 237
Die Präprozessor-Operatoren # und ## 237
Vordefinierte Makronamen 238
Kommentare im C-Stil 239

Teil II Der C99-Standard 241

Kapitel 11: C99 243
C89 versus C99: Ein Überblick 243
restrict-qualifizierte Zeiger 245
inline 245
Neue eingebaute Datentypen 246
Verbesserungen bei Arrays 248
Einzeilige Kommentare 249
Einstreuung von Code und Deklarationen 249
Änderungen am Präprozessor 250
Variablen innerhalb einer for-Schleife deklarieren 251
Zusammengesetzte Literale 252
Strukturen mit flexiblen Arrays 253
Festgelegte Initialwerte 253
Änderungen an der printf()-und-scanf()-Funktionenfamilie 254
Neue Bibliotheken in C99 254
Der vordefmierte Bezeichner__func__ 255
Erhöhte Übersetzungslimits 255
Implizites int wird nicht mehr unterstützt 256
Implizite Funktionsdeklarationen sind abgeschafft 257
Einschränkungen bei return 257
Erweiterte Integer-Typen 257
Änderungen der Promotionsregeln für Integers 258

Teil IM Die C-Standardbibliothek 259

Kapitel 12: Linken, Bibliotheken und Header 261
Der Linker 261
Header 264

Kapitel 13: l/0-Funktionen 269
clearerr 269
fclose 271
feof 271
ferror 272
fflush 273
fgetc 273
fgetpos 274
fgets 274
fopen 275
fprintf 277
fputc 278
fputs 278
fread 279
freopen 280
fscanf 281
fseek 281
fsetpos 282
ftell 283
fwrite 283
getc 284
getchar 285
gets 286
perror 287
printf 287
putc 290
putchar 291
puts 291
remove 292
rename 292
rewind 293
scanf 293
setbuf 297
setvbuf 297
snprintf 298
sprintf 298
sscanf 299
tmpfile 300
tmpnam 300
ungetc 301
vprintf, vfprintf, vsprintf und vsnprintf 302
vscanf, vfscanf und vsscanf 303

Kapitel 14: String- und Character-Funktionen 305
isalnum 305
isalpha 306
isblank 307
iscntrl 307
isdigit 308
isgraph 309
islower 309
isprint 310
ispunct 311
isspace 311
isupper 312
isxdigit 313
memchr 313
memcmp 314
memcpy 315
memmove 315
memset 316
strcat 317
strchr 317
strcmp 318
strcoll 319
strcpy 319
strcspn 320
strerror 320
strlen 321
strncat 321
strncmp 322
strncpy 323
strpbrk 323
strrchr 324
strspn 324
strstr 325
strtok 326
strxfrm 326
tolower 327
toupper 327

Kapitel 15: Mathematische Funktionen 329
acos 331
acosh 331
asin 332
asinh 332
atan 333
atanh 333
atan2 334
cbrt 334
ceil 335
copysign 335
cos 335
cosh 336
erf 337
erfc 337
exp 337
exp2 338
expml 338
fabs 338
fdim 339
floor 339
fma 340
fmax 340
fmin 340
fmod 341
frexp 341
hypot 342
ilogb 342
Idexp 342
Igamma 343
llrint 343
llround 343
log 344
log1p 344
log10 345
Iog2 345
logb 346
Irint 346
Iround 346
modf 347
nan 347
nearbyint 347
nextafter 348
nexttoward 348
pow 348
remainder 349
remquo 349
rint 350
round 350
scalbln 350
scalbn 351
sin 351
sink 352
sqrt 352
tan 353
tanh 353
tgamma 354
trunc 354

Kapitel 16: Zeit-, Datums-und Lokalisierungsfunktionen 355
asctime 355
clock 356
ctime 357
difftime 357
gmtime 358
localeconv 359
localtime 361
mktime 362
setlocale 362
strftime 363
time 366

Kapitel 17: Dynamische Belegungsfunktionen 367
calloc 367
free 368
malloc 369
realloc 369

Kapitel 18: Utilityfunktionen 371
abort 371
abs 372
assert 372
atexit 373
atof 374
atoi 374
atol 375
atoll 376
bsearch 376
div 377
exit 378
_Exit
getenv 379
labs 380
Habs 380
Idiv 380
lldiv
longjmp 381
mblen 383
mbstowcs 383
mbtowc 384
qsort 384
raise . 385
rand 386
setjmp 386
signal 387
srand 387
strtod 388
strtof 389
strtol 389
strtold 390
strtoll 391
strtoul 391
strtoull 392
system 392
va_arg, va_copy, va_start und va_end 393
wcstombs 394
wctomb 395

Kapitel 19: Wide-Charader-Funktionen 397
Wide-Character-Klassifizierungsfunktionen 397
Wide-Character-I/O-Funktionen 399
Wide-Character-String-Funktionen 401
Wide-Character-String-Konvertierungsfunktionen 402
Wide-Character-Array-Funktionen 402
Multibyte/Wide-Character-Konvertierungsfunktionen 403

Kapitel 20: Von C99 eingeführte Bibliotheksstrukturen 405
Die Complex-Bibliothek 405
Die Fließkomma-Umgebungsbibliothek 408
Der Header 409
Integer-Format-Konvertierungsfunktionen 410
Typ-generische mathematische Makros 411
Der Header 412

Teil IV Algorithmen und Anwendungsbeispiele 413

Kapitel 21: Sortieren und Suchen 415
Sortieren 415
Klassen von Sortieralgorithmen 416
Bewerten von Sortieralgorithmen 416
Der Bubble Sort 417
Sortieren durch Auswählen 420
Sortieren durch Einfügen 421
Verbesserte Sortierfunktionen 422
Die richtige Sortierfunktion wählen 426
Andere Datenstrukturen sortieren 426
Plattendateien sortieren 429
Suchen 432

Kapitel 22: Queues, Stacks, verkettete Listen und Bäume 435
Queues 436
Die ringförmige Queue 440
Stacks 442
Verkettete Listen 446
Einfach verkettete Listen 447
Doppelt verkettete Listen 451
Das Adressenlisten-Beispiel 455
Binäre Bäume 461

Kapitel 23: Dünnbesetzte Arrays 469
Die Aufgabe eines dünnbesetzten Arrays 469
Ein dünnbesetzter Array mit einer verketteten Liste 470
Ein dünnbesetzter Array mit einem binären Baum 473
Ein dünnbesetzter Array als Zeiger-Array 475
Hashing 478
Die richtige Lösung wählen 482

Kapitel 24: Ausdrücke analysieren und auswerten 483
Ausdrücke 483
Ausdrücke zerlegen 485
Ausdruck analysieren 487
Ein einfacher Parser für Ausdrücke 488
Der Parser mit Variablen 493

Kapitel 25: Problemlösungen mit künstlicher Intelligenz 503
Repräsentation und Terminologie 503
Kombinatorische Auflösungen 504
Suchverfahren 507
Suchverfahren bewerten 507
Die grafische Repräsentation 508
Das Suchverfahren Tiefe-zuerst 509
Das Suchverfahren Breite-zuerst 518
Heuristische Methoden hinzufügen 519
Das Suchverfahren Bergsteigen 521
Analyse des Bergsteigens 525
Das Suchverfahren Niedrigste-Kosten 526
Suchverfahren bewerten 528
Mehrere Lösungen finden 528
Die »optimale« Lösung finden 535
Zurück zu den verlorenen Schlüsseln 540

Teil V Softwareentwicklung mit C 545

Kapitel 26: Eine Windows 2000-Anwendung aufbauen 547
Grundlagen der Windows 2000-Programmierung 547
Die Win32-API 549
Elemente eines Fensters 550
Wie die Interaktion zwischen Windows und Ihrem Programm stattfindet 550
Einige wichtige Grundlagen einer Anwendung unter Windows 2000 551
Ein Windows 2000-Rumpfprogramm 553
Die Definitionsdatei wird überflüssig 560
Namenskonventionen 561

Kapitel 27: Software-Engineering mit C 563
Top-down-Entwurf 563
Narrensichere Funktionen 565
MAKE 567
Die integrierte Entwicklungsumgebung 571

Kapitel 28: Effizienz, Portierung und Debugging 573
Effizienz 573
Programme portieren 579
Debugging 580

Teil VI Ein Interpreter für C 589

Kapitel 29: Ein Interpreter für C 591
Spezifikationen des Little C-Interpreters 592
Interpretation einer strukturierten Sprache 595
Etwas C-Theorie 595
Der Parser für Ausdrücke 598
Der Little C-Interpreter 615
Die Bibliotheksfunktionen von Little C 639
Kompilieren und Linken des Little C-Interpreters 642
Demonstration von Little C 642
Little C verbessern 646
Little C erweitern 647

Stichwortverzeichnis 649