C von A bis Z

C von A bis Z

Das umfassende Handbuch für die Programmierung mit C. Zum Lernen und Nachschlagen. Aktuell zum Standard C23

Aus der Reihe

49,90 €

inkl. gesetzl. MwSt.

C von A bis Z

Ebenfalls verfügbar als:

Gebundenes Buch

Gebundenes Buch

ab 49,90 €
eBook

eBook

ab 37,43 €

Beschreibung

Details

Einband

Gebundene Ausgabe

Erscheinungsdatum

07.06.2023

Verlag

Rheinwerk

Seitenzahl

1263

Maße (L/B/H)

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

Beschreibung

Rezension

»Ein sehr ausführliches Buch zu C für Anfänger, Umsteiger und Fortgeschrittene mit vielen Übungen, Beispielen und Praxistipps.«
»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.«

Details

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

Auflage

5. Auflage

Sprache

Deutsch

ISBN

978-3-8362-9504-8

Weitere Bände von Rheinwerk Computing

Unsere Kundinnen und Kunden meinen

0.0

0 Bewertungen

Informationen zu Bewertungen

Zur Abgabe einer Bewertung ist eine Anmeldung im Konto notwendig. Die Authentizität der Bewertungen wird von uns nicht überprüft. Wir behalten uns vor, Bewertungstexte, die unseren Richtlinien widersprechen, entsprechend zu kürzen oder zu löschen.

Verfassen Sie die erste Bewertung zu diesem Artikel

Helfen Sie anderen Kund*innen durch Ihre Meinung

Erste Bewertung verfassen

Unsere Kundinnen und Kunden meinen

0.0

0 Bewertungen filtern

Weitere Artikel finden Sie in

Die Leseprobe wird geladen.
  • 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