Produktbild: C von A bis Z

C von A bis Z Das umfassende Handbuch

Aus der Reihe Rheinwerk Computing

49,90 €

inkl. gesetzl. MwSt., Versandkostenfrei


Beschreibung

Produktdetails

Einband

Gebundene Ausgabe

Erscheinungsdatum

07.06.2023

Verlag

Rheinwerk

Seitenzahl

1263

Maße (L/B/H)

24,6/17,5/6,3 cm

Gewicht

1958 g

Farbe

Weiß / Goldgelb

Auflage

5

Sprache

Deutsch

ISBN

978-3-8362-9504-8

Beschreibung

Rezension

Ein sehr ausführliches Buch zu C für Anfänger, Umsteiger und Fortgeschrittene mit vielen Übungen, Beispielen und Praxistipps. ("EKZ-Informationsdienst")
Optimal zur Einführung, aber auch zum Nachschlagen für Einsteiger, Umsteiger und Profis geeignet. Ein bewährtes Lehr- und Nachschlagewerk, das jeden Cent wert ist. ("Ahadesign.eu")

Produktdetails

Einband

Gebundene Ausgabe

Erscheinungsdatum

07.06.2023

Verlag

Rheinwerk

Seitenzahl

1263

Maße (L/B/H)

24,6/17,5/6,3 cm

Gewicht

1958 g

Farbe

Weiß / Goldgelb

Auflage

5

Sprache

Deutsch

ISBN

978-3-8362-9504-8

Herstelleradresse

Rheinwerk Verlag GmbH
Rheinwerkallee 4
53227 Bonn
DE

Email: service@rheinwerk-verlag.de

Ein neues Kapitel für Ihre Bücher

Ein neues Kapitel für Ihre Bücher

Schenken Sie Ihren alten Schätzen ein zweites Leben und erhalten dafür eine Thalia Geschenkkarte.

Jetzt verkaufen
Jetzt verkaufen

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)

Die Leseprobe wird geladen.
  • Produktbild: C von A bis Z




  •   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