Zum Hauptinhalt springen Zur Suche springen Zur Hauptnavigation springen

C von A bis Z

49,90 €

Sofort verfügbar, Lieferzeit: Sofort lieferbar

Format auswählen

C von A bis Z, Rheinwerk Verlag
Das umfassende Handbuch
Von Jürgen Wolf, René Krooß, im heise shop in digitaler Fassung erhältlich

Produktinformationen "C von A bis Z"

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:
  • Datenstrukturen
  • Algorithmen
  • Sicherheit
  • Dynamische Speicherverwaltung
  • Netzwerkprogrammierung
  • Cross-Plattform-Entwicklung
  • Parallele Programmierung
  • Auf Datenbanken zugreifen
  • Codebeispiele und Praxistipps
  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 - ... 103        5.11 ... Die Gleitpunkttypen »float« und »double« ... 107        5.12 ... Komplexe Gleitpunkttypen - ... 115        5.13 ... Der Datentyp »char«, Standardgröße 1 Byte ... 117        5.14 ... Nationale contra internationale Zeichensätze ... 123        5.15 ... Boolesche Werte - ... 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 - ... 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 ... 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 ... 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 - ... 705        19.1 ... Was ist eine Ellipse, und wie werden mit ihr Parameter übergeben? ... 705        19.2 ... Wie kann man mit die Parameterliste abfragen? ... 706        19.3 ... Makros in - »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 ... 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 - ... 738        21.2 ... Zeichenklassifizierung und Umwandlung - ... 739        21.3 ... Mathematische Funktionen - , und ... 744        21.4 ... Einige nützliche Funktionen in ... 758        21.5 ... Länderspezifische Eigenheiten - ... 778        21.6 ... Nichtlokale Sprünge - ... 782        21.7 ... Einige nützliche Funktionen in ... 786        21.8 ... Die »mem...«-Funktionen zur Speichermanipulation - ... 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

Artikel-Details

Anbieter:
Rheinwerk Verlag
Autor:
Jürgen Wolf, René Krooß
Artikelnummer:
9783836295116
Veröffentlicht:
07.06.23
Seitenanzahl:
1263