Produktbild: C programmieren
Vorbesteller Neu

C programmieren Das umfassende Handbuch

49,90 €

inkl. gesetzl. MwSt., Versandkostenfrei


Beschreibung

Produktdetails

Einband

Gebundene Ausgabe

Erscheinungsdatum

08.10.2026

Verlag

Rheinwerk Verlag

Seitenzahl

1238

Maße (L/B)

24/16,8 cm

Auflage

1

Sprache

Deutsch

ISBN

978-3-367-11641-6

Beschreibung

Produktdetails

Einband

Gebundene Ausgabe

Erscheinungsdatum

08.10.2026

Verlag

Rheinwerk Verlag

Seitenzahl

1238

Maße (L/B)

24/16,8 cm

Auflage

1

Sprache

Deutsch

ISBN

978-3-367-11641-6

Herstelleradresse

Rheinwerk Verlag GmbH
Rheinwerkallee 4
53227 Bonn
DE

Email: service@rheinwerk-verlag.de

Noch keine Bewertungen vorhanden

Verfassen Sie die erste Bewertung zu diesem Artikel

Helfen Sie anderen Kundinnen und Kunden durch Ihre Meinung.

Kundinnen und Kunden meinen

Bewertungen (0)

Weitere Artikel finden Sie in

  • Produktbild: C programmieren


  •   Materialien zum Buch ... 31

      Vorwort ... 33

      1.  Die Philosophie von C ... 41



           1.1 ... Was ist C, und was ist es nicht? ... 41

           1.2 ... Der C-Standard ... 44

           1.3 ... Die Bedeutung von C heute ... 52

           1.4 ... Rückblick und Ausblick ... 55



      2.  Werkzeugkette und das erste C-Programm ... 57



           2.1 ... Minimales Beispiel main.c ... 57

           2.2 ... Compiler im Alltag: GCC und Clang ... 60

           2.3 ... C-Programm auf der Kommandozeile kompilieren und ausführen ... 68

           2.4 ... Präprozessor, Compiler und Linker ... 73

           2.5 ... Editoren, IDEs ... 74

           2.6 ... Debugger und Laufzeitanalyse ... 80

           2.7 ... Dokumentation zu C-Funktionen finden ... 82

           2.8 ... Aufgabe ... 82

           2.9 ... Rückblick und Ausblick ... 83



      3.  Syntax und Struktur von C-Programmen ... 85



           3.1 ... Vom Quelltext zum Programm ... 85

           3.2 ... Lexikalische Grundlagen ... 86

           3.3 ... Lesbarkeit und Stil ... 90

           3.4 ... Grammatik und Programmbausteine ... 91

           3.5 ... Rückblick und Ausblick ... 93



      4.  Variablen, Datentypen und Typsicherheit ... 95



           4.1 ... Konstanten und String-Literale: feste Angaben im Quelltext ... 95

           4.2 ... Werte mit der Funktion zur formatierten Ausgabe printf() ausgeben ... 97

           4.3 ... Grundtypen ... 99

           4.4 ... Variablen ... 100

           4.5 ... Konstante Werte ... 112

           4.6 ... Ganzzahlen (int, short, long, long long) ... 117

           4.7 ... Gleitkommatypen (float, double, long double) ... 120

           4.8 ... Zeichentyp (char) ... 123

           4.9 ... Wahrheitswerte (bool) ... 128

           4.10 ... Der Nicht-Wertetyp (void) ... 129

           4.11 ... Vorzeichenbehaftete und vorzeichenlose Ganzzahlen ... 130

           4.12 ... Zahlendarstellungen und Schreibweisen ... 140

           4.13 ... Typkategorien und Grundbegriffe ... 145

           4.14 ... Rückblick und Ausblick ... 145



      5.  Operatoren und Ausdrücke ... 147



           5.1 ... Primäre Ausdrücke ... 148

           5.2 ... Zuweisungsoperatoren ... 149

           5.3 ... Arithmetische Operatoren (+, -, *, /, %) ... 152

           5.4 ... Kurzschreibweisen für Zuweisungen und Änderungen ... 157

           5.5 ... Vergleichsoperatoren ... 160

           5.6 ... Logische Operatoren (!, &&, ||) ... 165

           5.7 ... Typumwandlungen (Conversions) und ihre Regeln ... 174

           5.8 ... Kommaoperator, Vorrang, Assoziativität und Auswertungsreihenfolge ... 181

           5.9 ... Mathematisches aus den Standard-Bibliotheken ... 186

           5.10 ... Rückblick und Ausblick ... 188



      6.  Kontrollstrukturen ... 189



           6.1 ... Bedingte Anweisungen (Fallunterscheidungen: if, else) ... 189

           6.2 ... Bedingungsoperator (?:) ... 201

           6.3 ... switch-Anweisung ... 205

           6.4 ... while-Schleife ... 216

           6.5 ... do-while-Schleife ... 222

           6.6 ... for-Schleife ... 225

           6.7 ... Schleifen mit break und continue steuern ... 231

           6.8 ... Best Practices, Tipps und Fehlerquellen bei Schleifen ... 239

           6.9 ... Programmsprünge (goto) ... 246

           6.10 ... Rückblick und Ausblick ... 253



      7.  Funktionen ... 255



           7.1 ... Warum Funktionen? ... 255

           7.2 ... Funktionsgrundlagen: Definition, Deklaration und Aufruf ... 257

           7.3 ... Parameterübergabe ... 263

           7.4 ... Funktionen mit return verlassen ... 267

           7.5 ... Funktionen mit Rückgabewerten ... 267

           7.6 ... Überladen von Funktionen in C? ... 270

           7.7 ... Rekursive Funktionen ... 272

           7.8 ... Variadische Funktionen (variable Argumentlisten) ... 276

           7.9 ... Inline-Funktionen ... 280

           7.10 ... Attribute ... 282

           7.11 ... Fehlerbehandlung in Funktionen ... 287

           7.12 ... Rückblick und Ausblick ... 298



      8.  Scope, Linkage, Storage Duration und Modularisierung ... 299



           8.1 ... Scope, Linkage und Storage Duration von Variablen und Funktionen ... 300

           8.2 ... Storage Classes im Überblick ... 312

           8.3 ... Header-Dateien und Modularisierung ... 321

           8.4 ... Strukturierung größerer C-Anwendungen ... 344

           8.5 ... Rückblick und Ausblick ... 347



      9.  Der C-Präprozessor ... 349



           9.1 ... Historische Entwicklung und Motivation ... 349

           9.2 ... Makros definieren: #define ... 356

           9.3 ... Bedingte Kompilierung ... 388

           9.4 ... Vordefinierte Makros ... 394

           9.5 ... Compilerabhängige Erweiterungen ... 399

           9.6 ... Rückblick und Ausblick ... 405



    10.  Benutzerdefinierte und erweiterte Datentypen ... 407



           10.1 ... Typ-Alias definieren (typedef) ... 407

           10.2 ... Ganzzahltypen aus ... 409

           10.3 ... Typen aus ... 424

           10.4 ... Optionale Gleitkomma-Datentypen ... 425

           10.5 ... Größen, Grenzen und Eigenschaften der Typen ... 434

           10.6 ... Rückblick und Ausblick ... 438



    11.  Komplexe Datentypen ... 439



           11.1 ... Aufzählungen (enum) ... 439

           11.2 ... Strukturen (struct) ... 457

           11.3 ... Unions (union) ... 484

           11.4 ... Rückblick und Ausblick ... 511



    12.  Arrays ... 513



           12.1 ... Einführung und Motivation für Arrays ... 513

           12.2 ... Deklaration von Arrays ... 513

           12.3 ... Zugriff auf Array-Elemente ... 519

           12.4 ... Initialisierung von Arrays ... 523

           12.5 ... Arrays bei der Parameterübergabe und Rückgabe von Funktionen ... 540

           12.6 ... Aufgaben ... 550

           12.7 ... Mehrdimensionale Arrays ... 554

           12.8 ... Einbinden externer Inhalte ... 576

           12.9 ... Rückblick und Ausblick ... 578



    13.  Zeiger ... 579



           13.1 ... Datenzeiger und Adressen ... 579

           13.2 ... Der Null-Pointer nullptr ... 599

           13.3 ... Zeiger und const: Unveränderlichkeit deklarieren ... 602

           13.4 ... Zeiger in Funktionen ... 607

           13.5 ... Void-Zeiger: typenloses Zeigerwerkzeug ... 620

           13.6 ... Zeigerbeziehungen und -operationen ... 626

           13.7 ... Array-Decay und Zeigerarithmetik ... 634

           13.8 ... Zugriff auf Strukturen über Zeiger ... 652

           13.9 ... Arrays von Zeigern ... 661

           13.10 ... Mehrstufige Indirektion mit Zeigern auf Zeigern ... 671

           13.11 ... Kommandozeilenargumente als Array von Zeigern ... 685

           13.12 ... Funktionszeiger ... 688

           13.13 ... Rückblick und Ausblick ... 718



    14.  Speicherverwaltung und Fehlersicherheit ... 721



           14.1 ... Einführung in die dynamische Speicherverwaltung ... 721

           14.2 ... Grundlegende Allokationsfunktionen und Anwendungen ... 723

           14.3 ... Arbeiten mit Speicherbereichen ... 757

           14.4 ... Flexible Array-Mitglieder (FAM) ... 771

           14.5 ... Speicherlebenszyklen und Ownership-Modelle ... 773

           14.6 ... Typische Speicherfehler und ihre Vermeidung ... 781

           14.7 ... Fragmentierung und Out-of-Memory-Handling ... 804

           14.8 ... Alignment und Padding ... 804

           14.9 ... Debugging und Analyse von Speicherfehlern ... 807

           14.10 ... Allokatoren ... 816

           14.11 ... Rückblick und Ausblick ... 828



    15.  Metaprogrammierung ... 831



           15.1 ... Das Problem: generischer Code ohne zusätzlichen Laufzeitaufwand ... 831

           15.2 ... Präprozessor-Metaprogrammierung ... 833

           15.3 ... Compilerbasierte Metaprogrammierung ... 837

           15.4 ... Zusammenfassung und Ausblick ... 862



    16.  Zeichen, Zeichenketten und Textverarbeitung ... 865



           16.1 ... Historische Grundlagen der Textrepräsentation ... 865

           16.2 ... Von einzelnen Zeichen zu Zeichenketten ... 867

           16.3 ... Moderne Textrepräsentation ... 874

           16.4 ... Moderne Texttypen und Literale ... 877

           16.5 ... Moderne String-Repräsentationen ... 884

           16.6 ... Memory-Management-Techniken ... 889

           16.7 ... Dynamische Strings ... 893

           16.8 ... Locale: Einfluss auf Zeichen- und String-Funktionen ... 898

           16.9 ... Formatierte Ausgabe in Strings ... 902

           16.10 ... Parsing und Konvertierung ... 916

           16.11 ... Klassische Charakterklassifikation (is*() und weitere) ... 926

           16.12 ... Unicode in C23 ... 927

           16.13 ... Standard-Stringfunktionen für nullterminierte Zeichenketten ... 931

           16.14 ... Vergleiche und Hashing ... 944

           16.15 ... Testing, Fuzzing und Verifikation von C-String-Code ... 951

           16.16 ... Aufgabe ... 951

           16.17 ... Rückblick und Ausblick ... 956



    17.  Ein-/Ausgabe (I/O) ... 957



           17.1 ... Grundlagen von Streams ... 957

           17.2 ... Dateien öffnen und schließen ... 958

           17.3 ... Textdateien schreiben und lesen ... 960

           17.4 ... Standardstreams ... 962

           17.5 ... Rohdaten verarbeiten ... 964

           17.6 ... Position im Stream steuern (fseek(), ftell() usw.) ... 972

           17.7 ... Fehler erkennen und behandeln (ferror(), feof(), clearerr()) ... 975

           17.8 ... Puffer und Streameigenschaften steuern ... 976

           17.9 ... Dateien löschen und umbenennen ... 979

           17.10 ... Temporäre Dateien ... 980

           17.11 ... Plattform- und POSIX-Erweiterungen ... 982

           17.12 ... POSIX-Erweiterungen rund um Datei- und Verzeichnis-I/O ... 983

           17.13 ... Zusammenfassung und Ausblick ... 987



    18.  Bitoperationen ... 989



           18.1 ... Bit- und Schiebeoperatoren ... 990

           18.2 ... Bitmasken, Flags und typische Muster ... 996

           18.3 ... Standardisierte Bitfunktionen () ... 1006

           18.4 ... Ganzzahlen mit fester Bitbreite (_BitInt) ... 1008

           18.5 ... Bitfelder ... 1012

           18.6 ... Rückblick und Ausblick ... 1019



    19.  Numerik und Mathematik ... 1021



           19.1 ... Sichere Arithmetik () ... 1021

           19.2 ... Besondere Gleitkommazahlen ... 1025

           19.3 ... Konvertierungen zwischen Ganz- und Gleitkommazahlen ... 1032

           19.4 ... Mathematische Funktionen () ... 1036

           19.5 ... Floating-Point-Umgebung und Rundungsmodi () ... 1040

           19.6 ... Generische Mathematik () ... 1046

           19.7 ... Zufallsfunktionen in C ... 1047

           19.8 ... Komplexe Zahlen ... 1049

           19.9 ... Rückblick und Ausblick ... 1051



    20.  Weitere Teile der C-Standardbibliothek ... 1053



           20.1 ... Standard Utilities Header () ... 1053

           20.2 ... Signale () ... 1058

           20.3 ... Nichtlokale Sprünge () ... 1059

           20.4 ... Zeit und Datum () ... 1067

           20.5 ... Rückblick und Ausblick ... 1082



    21.  Nebenläufigkeit und Parallelität ... 1083



           21.1 ... Einführung in Nebenläufigkeit ... 1083

           21.2 ... Thread-Lebenszyklus: Erstellen, Ausführen, Beenden ... 1090

           21.3 ... Das C-Memory-Modell und atomare Operationen ... 1106

           21.4 ... Fortgeschrittene Konzepte kurz vorgestellt ... 1111

           21.5 ... Alternativen zu ... 1112

           21.6 ... Rückblick und Ausblick ... 1116



    22.  Standardbibliothek, Implementierungen und Erweiterungen ... 1119



           22.1 ... Implementierungen der Standardbibliothek ... 1119

           22.2 ... POSIX ... 1121

           22.3 ... Plattformunabhängige Bibliotheken ... 1127

           22.4 ... Plattformabstrahierende Bibliotheken ... 1128

           22.5 ... Plattformspezifische APIs jenseits von C und POSIX ... 1130

           22.6 ... Compiler- und Implementierungserweiterungen ... 1132

           22.7 ... Zusammenfassung und Ausblick ... 1133



    23.  Build und Auslieferung ... 1135



           23.1 ... Make ... 1136

           23.2 ... Projektstruktur in C ... 1144

           23.3 ... CMake ... 1147

           23.4 ... Cross-Compiler ... 1149

           23.5 ... Packaging und Distribution ... 1151

           23.6 ... Continuous Integration ... 1152

           23.7 ... Zusammenfassung und Ausblick ... 1154



    24.  Testen und Qualitätssicherung ... 1155



           24.1 ... Compiler-Warnungen ... 1155

           24.2 ... Statische Analyse ... 1156

           24.3 ... Code-Formatter ... 1158

           24.4 ... Tests ... 1159

           24.5 ... Code-Coverage ... 1161

           24.6 ... Fuzzing ... 1162

           24.7 ... Review-Prozesse ... 1163

           24.8 ... Dokumentation ... 1164

           24.9 ... Zusammenfassung und Ausblick ... 1166



    25.  Profiler und Optimierung ... 1167



           25.1 ... Compiler-Optimierungen ... 1167

           25.2 ... Grundlagen und Kennzahlen der Leistungsanalyse ... 1172

           25.3 ... Werkzeuge ... 1176

           25.4 ... Benchmarking und Reproduzierbarkeit ... 1180

           25.5 ... Optimierungstechniken im Code ... 1184

           25.6 ... Methodik: systematisches Vorgehen bei Leistungsproblemen ... 1191

           25.7 ... Rückblick und Ausblick ... 1193



    26.  Nachwort: der »C-Weg« -- Philosophie und Kernprinzipien ... 1195

      Anhang ... 1199

      A.  Standard-Header ... 1201

      B.  Die 8 kostbaren Übersetzungsphasen ... 1205

      C.  Operatorpräzedenz ... 1211

      D.  Konvertierungsspezifikationen sowie PRI- und SCN-Makros ... 1213

      Index ... 1229