Hugendubel.info - Die B2B Online-Buchhandlung 

Merkliste
Die Merkliste ist leer.
Bitte warten - die Druckansicht der Seite wird vorbereitet.
Der Druckdialog öffnet sich, sobald die Seite vollständig geladen wurde.
Sollte die Druckvorschau unvollständig sein, bitte schliessen und "Erneut drucken" wählen.

C von A bis Z

Das umfassende Handbuch für die Programmierung mit C. Zum Lernen und Nachschlagen. Aktuell zum Standard C23
BuchGebunden
1263 Seiten
Deutsch
Rheinwerk Verlagerschienen am07.06.20235., überarb. Aufl.

Unser beliebter Klassiker in fünfter Auflage. Zum aktuellen Standard C23 und mit einem Autorenteam aus Praxis und Lehre. Lassen Sie sich umfassend einführen oder nutzen Sie das Buch als Nachschlagewerk. Von den Grundlagen über die dynamische Speicherverwaltung bis zur plattformübergreifenden Entwicklung. Randvoll mit hilfreichen Beispielen und Praxistipps - C-Wissen pur!

Aus dem Inhalt:

DatenstrukturenAlgorithmenSicherheitDynamische SpeicherverwaltungNetzwerkprogrammierungCross-Plattform-EntwicklungParallele ProgrammierungAuf Datenbanken zugreifenCodebeispiele und Praxistipps


Die Fachpresse zur Vorauflage:

Programmierbuch.de: »Eins der ausführlichsten Bücher zu C.«


mehr
Verfügbare Formate
BuchGebunden
EUR49,90
E-BookEPUB0 - No protectionE-Book
EUR49,90

Produkt

Klappentext
Unser beliebter Klassiker in fünfter Auflage. Zum aktuellen Standard C23 und mit einem Autorenteam aus Praxis und Lehre. Lassen Sie sich umfassend einführen oder nutzen Sie das Buch als Nachschlagewerk. Von den Grundlagen über die dynamische Speicherverwaltung bis zur plattformübergreifenden Entwicklung. Randvoll mit hilfreichen Beispielen und Praxistipps - C-Wissen pur!

Aus dem Inhalt:

DatenstrukturenAlgorithmenSicherheitDynamische SpeicherverwaltungNetzwerkprogrammierungCross-Plattform-EntwicklungParallele ProgrammierungAuf Datenbanken zugreifenCodebeispiele und Praxistipps


Die Fachpresse zur Vorauflage:

Programmierbuch.de: »Eins der ausführlichsten Bücher zu C.«


Details
ISBN/GTIN978-3-8362-9504-8
ProduktartBuch
EinbandartGebunden
Erscheinungsjahr2023
Erscheinungsdatum07.06.2023
Auflage5., überarb. Aufl.
Seiten1263 Seiten
SpracheDeutsch
Gewicht1952 g
Artikel-Nr.16646767

Inhalt/Kritik

Inhaltsverzeichnis

  Vorwort ... 25
  1.  Einstieg in C ... 27

       1.1 ... Übersicht zu C ... 27
       1.2 ... Der ANSI-C-Standard ... 29
       1.3 ... Der POSIX-Standard ... 32
       1.4 ... Vor- und Nachteile der Programmiersprache C ... 33
       1.5 ... C in diesem Buch ... 34
       1.6 ... Was benötigen Sie für C? ... 35
       1.7 ... Welcher Compiler und welches Betriebssystem? ... 37
       1.8 ... Unterschiede zwischen Windows und Linux ... 38
       1.9 ... Eine Programmierumgebung einrichten am Beispiel von Pelles C 8.00 für Windows ... 38
       1.10 ... Eine Programmierumgebung einrichten - Nano/GCC für Linux ... 47

  2.  Eine günstige Programmierplattform - der Raspberry Pi ... 49

       2.1 ... Was genau ist der Raspberry Pi? ... 50
       2.2 ... Installation eines Linux-Betriebssystems am Beispiel von Raspberry Pi OS ... 54
       2.3 ... Die Konfiguration des Raspberry Pi im Detail ... 63
       2.4 ... Das Tool raspi-config ... 63

  3.  Das erste Programm ... 69

       3.1 ... Was leistet der Editor? ... 70
       3.2 ... Was leistet der Compiler? ... 70
       3.3 ... Was sind Include-Dateien, und wozu benötigt man sie? ... 71
       3.4 ... Das erste Programm - die Ausgabe eines Textes in der Konsole ... 71
       3.5 ... Das Hallo-Welt-Programm im Detail ... 72
       3.6 ... Wie kompiliert man ein Programm und führt es anschließend aus? ... 75

  4.  Grundlagen ... 77

       4.1 ... Symbole ... 77
       4.2 ... Zeichensätze ... 84
       4.3 ... Strings ... 89
       4.4 ... Das Einführungsbeispiel mit Strings ... 90

  5.  Basisdatentypen ... 91

       5.1 ... Was ist ein Byte, und wie werden Zahlen in C gespeichert? ... 91
       5.2 ... Was ist eine Variable, und was ist ein Variablentyp? ... 92
       5.3 ... Was ist ein Operand? ... 93
       5.4 ... Was ist ein Parameter? ... 93
       5.5 ... Wie speichert ein Prozessor Variablen, Parameter und Operanden? ... 93
       5.6 ... Was sind Speicheradressen, und warum sind sie wichtig für C? ... 93
       5.7 ... Deklaration und Definition von Variablen ... 94
       5.8 ... Array-Datentypen (Datenfelder) ... 96
       5.9 ... Standard-Datentypen ... 96
       5.10 ... Ganzzahlige Typen mit vorgegebener Breite - <stdint.h> ... 103
       5.11 ... Die Gleitpunkttypen »float« und »double« ... 107
       5.12 ... Komplexe Gleitpunkttypen - <complex.h> ... 115
       5.13 ... Der Datentyp »char«, Standardgröße 1 Byte ... 117
       5.14 ... Nationale contra internationale Zeichensätze ... 123
       5.15 ... Boolesche Werte - <stdbool.h> ... 127
       5.16 ... Der Unterschied zwischen vorzeichenlosen und vorzeichenbehafteten Zahlen ... 128
       5.17 ... Limits für Ganzzahl- und Gleitpunktdatentypen ... 130
       5.18 ... Der Typ »void« ... 134
       5.19 ... Numerische Konstanten ... 134
       5.20 ... Umwandlungsvorgaben für formatierte Ein-/Ausgabe ... 136

  6.  Formatierte Ein-/Ausgabe mit »scanf()« und »printf()« ... 145

       6.1 ... Formatierte Eingabe mit »scanf()« ... 145
       6.2 ... Formatierte Ausgabe mit »printf()« ... 155

  7.  Operatoren ... 159

       7.1 ... Was sind Operatoren, und wozu benötigt man sie in C? ... 159
       7.2 ... Arithmetische Operatoren ... 160
       7.3 ... Erweiterte Darstellung arithmetischer Operatoren ... 164
       7.4 ... Inkrement- und Dekrement-Operatoren ... 165
       7.5 ... Bit-Operatoren ... 167
       7.6 ... Makros für logische Operatoren und Bit-Operatoren - <iso646.h> ... 175
       7.7 ... Der »sizeof«-Operator ... 176

  8.  Typumwandlung ... 179

       8.1 ... Automatische implizite Datentypumwandlung durch den CCompiler ... 179
       8.2 ... Wozu benötigt man das benutzerdefinierte explizite Typecasting? ... 184
       8.3 ... Explizite Datentypumwandlung mit Typecasting an Beispielen ... 184

  9.  Kontrollstrukturen ... 187

       9.1 ... Verzweigungen mit der »if«-Bedingung ... 188
       9.2 ... Die Verzweigung mit »else if« ... 192
       9.3 ... Die Verzweigung mit »else« ... 194
       9.4 ... Der !-Operator (logischer NOT-Operator) ... 198
       9.5 ... Logisches UND (&&) - logisches ODER (||) ... 200
       9.6 ... Der Bedingungsoperator »?:« ... 203
       9.7 ... Fallunterscheidung: die »switch«-Verzweigung ... 205
       9.8 ... Die »while«-Schleife ... 210
       9.9 ... Die »do while«-Schleife ... 214
       9.10 ... Die »for«-Schleife ... 219
       9.11 ... Kontrollierter Ausstieg aus Schleifen mit »break« ... 227
       9.12 ... Direkte Sprünge mit »goto« ... 229
       9.13 ... Einige Anmerkungen zum Notationsstil, ehe Sie weiterlesen ... 229
       9.14 ... Einige Anmerkungen zu einem guten Programmierstil ... 230

10.  Funktionen ... 233

       10.1 ... Was sind Funktionen? ... 233
       10.2 ... Wozu dienen Funktionen? ... 234
       10.3 ... Definition von Funktionen ... 234
       10.4 ... Funktionsaufruf ... 235
       10.5 ... Funktionsdeklaration ... 237
       10.6 ... Lokale Variablen ... 239
       10.7 ... Globale Variablen ... 241
       10.8 ... Statische Variablen ... 243
       10.9 ... Schlüsselwörter für Variablen - Speicherklassen ... 244
       10.10 ... Typ-Qualifizierer ... 245
       10.11 ... Geltungsbereich von Variablen ... 246
       10.12 ... Speicherklassen-Spezifizierer für Funktionen ... 248
       10.13 ... Datenaustausch zwischen Funktionen ... 249
       10.14 ... Wertübergabe an Funktionen (Call-by-Value) ... 250
       10.15 ... Der Rückgabewert von Funktionen ... 254
       10.16 ... Die Hauptfunktion »main()« ... 256
       10.17 ... Was bedeutet der Rückgabewert beim Beenden eines Programms? ... 258
       10.18 ... Funktionen der Laufzeitbibliothek ... 262
       10.19 ... Getrenntes Kompilieren von Quelldateien ... 263
       10.20 ... Rekursive Funktionen (Rekursion) ... 265
       10.21 ... »inline«-Funktionen ... 278

11.  Präprozessor-Direktiven ... 281

       11.1 ... Mit »#include« Dateien einbinden ... 282
       11.2 ... Wichtige vordefinierte Headerdateien für C ... 283
       11.3 ... Makros und Konstanten - »#define« ... 285
       11.4 ... Bedingte Kompilierung mit »#ifdef« ... 294
       11.5 ... Vordefinierte Präprozessor-Direktiven (ANSI C) ... 300
       11.6 ... Einen Makroparameter durch einen String ersetzen ... 302
       11.7 ... »#undef« - Makronamen wieder aufheben ... 304
       11.8 ... Fehlermeldungen ausgeben mit »#error« ... 304
       11.9 ... »#pragma« (gilt nur für Windows) ... 306

12.  Arrays ... 307

       12.1 ... Arrays deklarieren ... 308
       12.2 ... Initialisierung und Zugriff auf Arrays ... 309
       12.3 ... Arrays vergleichen ... 316
       12.4 ... Anzahl der Elemente eines Arrays ermitteln ... 318
       12.5 ... Übergabe von Arrays an Funktionen ... 319
       12.6 ... Arrays aus Funktionen zurückgeben ... 322
       12.7 ... Programmbeispiel zu Arrays ... 323
       12.8 ... Array-Werte über die Tastatur einlesen ... 327
       12.9 ... Mehrdimensionale Arrays ... 328
       12.10 ... Arrays in eine Tabellenkalkulation einlesen (CSV-Dateien) ... 343
       12.11 ... Strings/Zeichenketten (»char«-Array) ... 345
       12.12 ... Einlesen von Strings ... 352
       12.13 ... Die Standard-Bibliothek <string.h> ... 355

13.  Zeiger (Pointer) ... 369

       13.1 ... Der Unterschied zwischen einer normalen Variablen und einem Zeiger ... 369
       13.2 ... Zeiger deklarieren ... 370
       13.3 ... Zeiger initialisieren ... 371
       13.4 ... Zeigerarithmetik ... 384
       13.5 ... Zeiger, die auf andere Zeiger verweisen ... 385
       13.6 ... Typensicherung bei der Dereferenzierung ... 388
       13.7 ... Zeiger als Funktionsparameter (Call-by-Reference) ... 389
       13.8 ... Array und Zeiger ... 396
       13.9 ... Zeiger auf Strings ... 403
       13.10 ... Zeiger auf Zeiger und Stringtabellen ... 405
       13.11 ... Zeiger auf Funktionen ... 415
       13.12 ... void-Zeiger ... 420
       13.13 ... Äquivalenz zwischen Zeigern und Arrays ... 424
       13.14 ... Der »restrict«-Zeiger ... 426

14.  Kommandozeilenargumente ... 429

       14.1 ... Argumente an die Hauptfunktion übergeben ... 430
       14.2 ... Argumente aus der Kommandozeile auswerten ... 435

15.  Dynamische Speicherverwaltung ... 441

       15.1 ... Das Speicherkonzept ... 442
       15.2 ... Speicherallokation mit »malloc()« ... 444
       15.3 ... Das NULL-Mysterium ... 447
       15.4 ... Speicherreservierung und ihre Probleme ... 451
       15.5 ... »free()« - Speicher wieder freigeben ... 452
       15.6 ... Dynamische Arrays ... 460
       15.7 ... Speicher dynamisch reservieren mit »realloc()« und »calloc()« ... 464
       15.8 ... Speicher vom Stack anfordern mit »alloca()« (nicht ANSI C) ... 468
       15.9 ... Ergänzende Anmerkungen zu »free()« ... 468
       15.10 ... Zweidimensionale dynamische Arrays ... 469
       15.11 ... Was muss man tun, wenn die Speicherallokation fehlschlägt? ... 472

16.  Strukturen ... 479

       16.1 ... Benutzerdefinierte Typendefinitionen mit »typedef« ... 479
       16.2 ... Was ist ein strukturierter Datentyp, und wozu benötigt man ihn in C? ... 479
       16.3 ... Strukturen mit »typedef struct« deklarieren ... 480
       16.4 ... Initialisierung und Zugriff auf Strukturen ... 482
       16.5 ... Strukturen als Wertübergabe an eine Funktion benutzen ... 491
       16.6 ... Strukturen als Rückgabewert einer Funktion benutzen ... 493
       16.7 ... Strukturen miteinander vergleichen ... 495
       16.8 ... Arrays von Strukturen erstellen ... 497
       16.9 ... Strukturen in Strukturen (Nested Structures) ... 504
       16.10 ... Weitere spezielle Datentypen ... 514
       16.11 ... Attribute von Strukturen verändern ... 524
       16.12 ... Bitfelder ... 528
       16.13 ... Das »offsetof«-Makro ... 535

17.  Ein-/Ausgabe-Funktionen ... 537

       17.1 ... Was ist eine Datei aus Sicht der Programmiersprache C? ... 537
       17.2 ... Formatierte und unformatierte Ein-/Ausgabe ... 538
       17.3 ... Höhere Ein-/Ausgabe-Funktionen mit <stdio.h> ... 538
       17.4 ... Streams (Ein-/Ausgabe-Datenströme) ... 566
       17.5 ... Spezielle Ein-/Ausgabe-Funktionen für Streams ... 595
       17.6 ... Low-Level-Datei-I/O-Funktionen (nicht ANSI C) ... 641

18.  Attribute von Dateien und das Arbeiten mit Verzeichnissen (nicht ANSI C) ... 673

       18.1 ... Die Attribute einer Datei mit »stat()« ermitteln ... 673
       18.2 ... Prüfen des Zugriffsrechts mit »access()« ... 691
       18.3 ... Verzeichnisfunktionen ... 693

19.  Arbeiten mit variabel langen Argumentlisten - <stdarg.h> ... 705

       19.1 ... Was ist eine Ellipse, und wie werden mit ihr Parameter übergeben? ... 705
       19.2 ... Wie kann man mit <stdarg.h> die Parameterliste abfragen? ... 706
       19.3 ... Makros in <stdarg.h> - »va_list«, »va_arg«, »va_start« und »va_end« ... 706
       19.4 ... Die Argumentliste am Anfang oder Ende kennzeichnen ... 707
       19.5 ... »vprintf()«, »vsprintf()«, »vfsprintf()« und »vsnsprintf()« ... 712
       19.6 ... Variadic Makros - __VA_ARGS__ ... 716

20.  Zeitroutinen ... 721

       20.1 ... Die Headerdatei <time.h> ... 721
       20.2 ... Laufzeitmessung (Profiling) ... 734
       20.3 ... Besonderheiten beim Raspberry Pi ... 735

21.  Weitere Headerdateien und ihre Funktionen (ANSI C) ... 737

       21.1 ... Testmöglichkeiten und Fehlersuche - <assert.h> ... 738
       21.2 ... Zeichenklassifizierung und Umwandlung - <ctype.h> ... 739
       21.3 ... Mathematische Funktionen - <math.h>, <tgmath.h> und <complex.h> ... 744
       21.4 ... Einige nützliche Funktionen in <stdlib.h> ... 758
       21.5 ... Länderspezifische Eigenheiten - <locale.h> ... 778
       21.6 ... Nichtlokale Sprünge - <setjmp.h> ... 782
       21.7 ... Einige nützliche Funktionen in <signal.h> ... 786
       21.8 ... Die »mem...«-Funktionen zur Speichermanipulation - <string.h> ... 791

22.  Dynamische Datenstrukturen ... 797

       22.1 ... Lineare Listen (einfach verkettete Listen) ... 797
       22.2 ... Doppelt verkettete Listen ... 832
       22.3 ... Stacks nach dem LIFO-(Last-in-first-out-)Prinzip ... 849
       22.4 ... Queues nach dem FIFO-Prinzip ... 870
       22.5 ... Dynamisches Array mit flexiblen Elementen ... 879

23.  Algorithmen ... 881

       23.1 ... Was sind Algorithmen? ... 881
       23.2 ... Einige einfache Beispiele für Algorithmen ... 883
       23.3 ... Kryptografische Algorithmen ... 969

24.  MySQL und C ... 1027

       24.1 ... Aufbau eines Datenbanksystems ... 1027
       24.2 ... MySQL installieren ... 1033
       24.3 ... Crashkurs SQL ... 1037
       24.4 ... Die MySQL-C-API ... 1052
       24.5 ... MySQL und C mit CGI ... 1083
       24.6 ... Funktionsübersicht ... 1101
       24.7 ... Datentypenübersicht der C-API ... 1105
       24.8 ... Weiterführende Literatur zu Datenbanken ... 1105

25.  Netzwerkprogrammierung und Cross-Plattform-Entwicklung ... 1107

       25.1 ... Begriffe zur Netzwerktechnik ... 1107
       25.2 ... Was sind Sockets und wie legt man sie in C an? ... 1114
       25.3 ... Headerdateien für die Netzwerkprogrammierung ... 1115
       25.4 ... Das Client-Server-Prinzip ... 1118
       25.5 ... Erstellen einer Client-Anwendung ... 1120
       25.6 ... Erstellen einer Server-Anwendung ... 1130
       25.7 ... Ein einfacher TCP-Echo-Server ... 1135
       25.8 ... Cross-Plattform-Development ... 1143
       25.9 ... Weitere Anmerkungen zur Netzwerkprogrammierung und Literaturempfehlungen ... 1166

26.  Paralleles Rechnen ... 1173

       26.1 ... Was ist Multitasking und wie wird es realisiert? ... 1173
       26.2 ... Braucht man spezielle Prozessoren für Multitasking? ... 1174
       26.3 ... Braucht man spezielle Multitasking-Betriebssysteme? ... 1177
       26.4 ... Programmiertechniken der Parallelisierung ... 1177
       26.5 ... Vom Prozess zum Thread ... 1179
       26.6 ... Mit POSIX-Threads programmieren ... 1182

27.  Sicheres Programmieren ... 1193

       27.1 ... Buffer Overflow (Speicherüberlauf) ... 1194
       27.2 ... Warum sind Buffer Overflows kritisch für die Sicherheit? ... 1195
       27.3 ... Wie man Buffer Overflows vermeidet ... 1202
       27.4 ... Gegenmaßnahmen zum Buffer Overflow, wenn das Programm fertig ist ... 1205
       27.5 ... Stack Overflow (Stapelüberlauf) ... 1210
       27.6 ... Was verursacht Stack Overflows? ... 1210
       27.7 ... Warum ist ein Stapelüberlauf kritisch für die Sicherheit? ... 1210
       27.8 ... Wie man Stack Overflows verhindert ... 1211
       27.9 ... Memory Leaks (Speicherlecks) ... 1212
       27.10 ... Bibliotheken und Tools zu Memory Leaks ... 1216
       27.11 ... Tipps zu Sicherheitsproblemen ... 1217

28.  Wie geht's jetzt weiter? ... 1219

       28.1 ... GUI-Programmierung - grafische Oberflächen ... 1220
       28.2 ... Grafikprogrammierung unter Windows ... 1223

  Anhang ... 1241

       A ... Operatoren ... 1241

  Index ... 1247
mehr
Kritik
»Ein sehr ausführliches Buch zu C für Anfänger, Umsteiger und Fortgeschrittene mit vielen Übungen, Beispielen und Praxistipps.« EKZ-Informationsdienst 202306mehr

Schlagworte

Autor

Jürgen Wolf ist seit über 20 Jahren Autor und seit mehr als 10 Jahren passionierter Digitalfotograf. Seine Buchthemen sind Bildbearbeitung, Fotografie, Webentwicklung, Betriebssysteme und Programmierung. Und egal welches Thema: Bei jedem Buch ist es sein Ziel, auch komplexe Zusammenhänge klar und verständlich zu erklären.