Puzzle Zeitvertreib Beste 4K Filme Beste Multimedia-Lernspiele % SALE %

C von A bis Z: Das umfassende Handbuch für C-Programmierer. Zum Lernen und Nachschlagen. Aktuell zum


C von A bis Z: Das umfassende Handbuch für C-Programmierer. Zum Lernen und Nachschlagen. Aktuell zum
41.54 CHF
zzgl. 10 CHF Versandkosten
Versandkostenfrei ab 50 CHF

Lieferzeit ca. 5 Tage

  • 10587269


Beschreibung



Materialien zum Buch ... 23


Vorwort ... 25


Vorwort des Gutachters ... 29


1. Einstieg in C ... 31


1.1 ... Übersicht zu C ... 31

1.2 ... Der ANSI-C-Standard ... 33

1.3 ... Der POSIX-Standard ... 36

1.4 ... Vor- und Nachteile der Programmiersprache C ... 37

1.5 ... C in diesem Buch ... 39

1.6 ... Was benötigen Sie für C? ... 39

1.7 ... Welcher Compiler und welches Betriebssystem? ... 41

1.8 ... Unterschiede zwischen Windows und Linux ... 42

1.9 ... Eine Programmierumgebung einrichten -- Code::Blocks für Windows ... 42

1.10 ... Eine Programmierumgebung einrichten -- Nano/GCC für Linux ... 51



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


2.1 ... Was genau ist der Raspberry Pi? ... 53

2.2 ... Installation eines Linux-Betriebssystems am Beispiel von Raspbian ... 57

2.3 ... Die Konfiguration des Raspberry Pi im Detail ... 66

2.4 ... Das Tool raspi-config ... 66



3. Das erste Programm ... 73


3.1 ... Was leistet der Editor? ... 74

3.2 ... Was leistet der Compiler? ... 74

3.3 ... Was sind Include-Dateien und wozu benötigt man sie? ... 75

3.4 ... Das erste Programm -- die Ausgabe eines Textes in der Konsole ... 75

3.5 ... Das Hallo-Welt-Programm im Detail ... 76

3.6 ... Wie kompiliert man ein Programm und führt es anschließend aus? ... 79



4. Grundlagen ... 81


4.1 ... Symbole ... 81

4.2 ... Zeichensätze ... 88

4.3 ... Strings ... 93

4.4 ... Das Einführungsbeispiel mit Strings ... 94



5. Basisdatentypen ... 95


5.1 ... Was ist ein Byte und wie werden Zahlen in C gespeichert? ... 95

5.2 ... Was ist eine Variable und was ist ein Variablentyp? ... 96

5.3 ... Was ist ein Operand? ... 97

5.4 ... Was ist ein Parameter? ... 97

5.5 ... Wie speichert ein Prozessor Variablen, Parameter und Operanden? ... 97

5.6 ... Was sind Speicheradressen und warum sind sie wichtig für C? ... 97

5.7 ... Deklaration und Definition von Variablen ... 98

5.8 ... Array-Datentypen (Datenfelder) ... 99

5.9 ... Standard-Datentypen ... 100

5.10 ... Ganzzahlige Typen mit vorgegebener Breite -- ... 107

5.11 ... Die Gleitpunkttypen »float« und »double«, Größe 4 oder 8 Byte ... 110

5.12 ... Komplexe Gleitpunkttypen -- ... 118

5.13 ... Der Datentyp »char«, Standardgröße 1 Byte ... 120

5.14 ... Nationale contra internationale Zeichensätze ... 126

5.15 ... Boolesche Werte -- ... 129

5.16 ... Der Unterschied zwischen vorzeichenlosen und vorzeichenbehafteten Zahlen ... 131

5.17 ... Limits für Ganzzahl- und Gleitpunktdatentypen ... 133

5.18 ... Der Typ »void« ... 136

5.19 ... Numerische Konstanten ... 137

5.20 ... Umwandlungsvorgaben für formatierte Ein-/Ausgabe ... 139



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


6.1 ... Formatierte Eingabe mit »scanf()« ... 147

6.2 ... Formatierte Ausgabe mit »printf()« ... 157



7. Operatoren ... 161


7.1 ... Was sind Operatoren und wozu benötigt man sie in C? ... 161

7.2 ... Arithmetische Operatoren ... 162

7.3 ... Erweiterte Darstellung arithmetischer Operatoren ... 165

7.4 ... Inkrement- und Dekrement-Operatoren ... 167

7.5 ... Bit-Operatoren ... 168

7.6 ... Makros für logische Operatoren und Bit-Operatoren -- ... 177

7.7 ... Der »sizeof«-Operator ... 178



8. Typumwandlung ... 181


8.1 ... Automatische implizite Datentypumwandlung durch den C-Compiler ... 181

8.2 ... Wozu benötigt man das benutzerdefinierte explizite Typecasting? ... 186

8.3 ... Explizite Datentypumwandlung mit Typecasting an Beispielen ... 186



9. Kontrollstrukturen ... 189


9.1 ... Verzweigungen mit der »if«-Bedingung ... 190

9.2 ... Die Verzweigung mit »else if« ... 194

9.3 ... Die Verzweigung mit »else« ... 196

9.4 ... Der !-Operator (logischer NOT-Operator) ... 200

9.5 ... Logisches UND (&&) -- logisches ODER (||) ... 202

9.6 ... Der Bedingungsoperator »?:« ... 205

9.7 ... Fallunterscheidung: die »switch«-Verzweigung ... 207

9.8 ... Die »while«-Schleife ... 212

9.9 ... Die »do while«-Schleife ... 216

9.10 ... Die »for«-Schleife ... 221

9.11 ... Kontrollierter Ausstieg aus Schleifen mit »break« ... 229

9.12 ... Direkte Sprünge mit »goto« -- und warum man sie nicht verwenden sollte ... 231

9.13 ... Einige Anmerkungen zum Notationsstil ... 232

9.14 ... Einige Anmerkungen zu einem guten Programmierstil ... 234



10. Funktionen ... 235


10.1 ... Was sind Funktionen? ... 235

10.2 ... Wozu dienen Funktionen? ... 236

10.3 ... Definition von Funktionen ... 236

10.4 ... Funktionsaufruf ... 237

10.5 ... Funktionsdeklaration ... 238

10.6 ... Lokale Variablen ... 241

10.7 ... Globale Variablen ... 243

10.8 ... Statische Variablen ... 245

10.9 ... Schlüsselwörter für Variablen -- Speicherklassen ... 246

10.10 ... Typ-Qualifizierer ... 247

10.11 ... Geltungsbereich von Variablen ... 248

10.12 ... Speicherklassen-Spezifizierer für Funktionen ... 250

10.13 ... Datenaustausch zwischen Funktionen ... 250

10.14 ... Wertübergabe an Funktionen (Call-by-Value) ... 252

10.15 ... Der Rückgabewert von Funktionen ... 256

10.16 ... Die Hauptfunktion »main()« ... 258

10.17 ... Was bedeutet der Rückgabewert beim Beenden eines Programms? ... 260

10.18 ... Funktionen der Laufzeitbibliothek ... 264

10.19 ... Getrenntes Kompilieren von Quelldateien ... 264

10.20 ... Rekursive Funktionen (Rekursion) ... 267

10.21 ... »inline«-Funktionen ... 280



11. Präprozessor-Direktiven ... 283


11.1 ... Mit »#include« Dateien einbinden ... 284

11.2 ... Wichtige vordefinierte Headerdateien für C ... 285

11.3 ... Makros und Konstanten -- »#define« ... 287

11.4 ... Bedingte Kompilierung mit »#ifdef« ... 296

11.5 ... Vordefinierte Präprozessor-Direktiven (ANSI C) ... 301

11.6 ... Einen Makroparameter durch einen String ersetzen ... 304

11.7 ... »#undef« -- Makronamen wieder aufheben ... 305

11.8 ... Fehlermeldungen ausgeben mit »#error« ... 306

11.9 ... »#pragma« (gilt nur für Windows) ... 307



12. Arrays ... 309


12.1 ... Arrays deklarieren ... 309

12.2 ... Initialisierung und Zugriff auf Arrays ... 311

12.3 ... Arrays vergleichen ... 318

12.4 ... Anzahl der Elemente eines Arrays ermitteln ... 320

12.5 ... Übergabe von Arrays an Funktionen ... 321

12.6 ... Arrays aus Funktionen zurückgeben ... 324

12.7 ... Programmbeispiel zu Arrays ... 325

12.8 ... Array-Werte über die Tastatur einlesen ... 328

12.9 ... Mehrdimensionale Arrays ... 329

12.10 ... Arrays in eine Tabellenkalkulation einlesen (CSV-Dateien) ... 345

12.11 ... Strings/Zeichenketten (»char«-Array) ... 346

12.12 ... Einlesen von Strings ... 353

12.13 ... Die Standard-Bibliothek ... 356



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 ... 385

13.5 ... Zeiger, die auf andere Zeiger verweisen ... 386

13.6 ... Typensicherung bei der Dereferenzierung ... 389

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 ... 414

13.12 ... void-Zeiger ... 420

13.13 ... Äquivalenz zwischen Zeigern und Arrays ... 423

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 ... 450

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? ... 480

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 ... 496

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 ... 525

16.12 ... Bitfelder ... 529

16.13 ... Das »offsetof«-Makro ... 536



17. Ein-/Ausgabe-Funktionen ... 539


17.1 ... Was ist eine Datei aus Sicht der Programmiersprache C? ... 539

17.2 ... Formatierte und unformatierte Ein-/Ausgabe ... 540

17.3 ... Höhere Ein-/Ausgabe-Funktionen mit ... 540

17.4 ... Streams (Ein-/Ausgabe-Datenströme) ... 568

17.5 ... Spezielle Ein-/Ausgabe-Funktionen für Streams ... 597

17.6 ... Low-Level-Datei-I/O-Funktionen (nicht ANSI C) ... 643



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 -- ... 707


19.1 ... Was ist eine Ellipse und wie werden mit ihr Parameter übergeben? ... 707

19.2 ... Wie kann man mit die Parameterliste abfragen? ... 708

19.3 ... Makros in -- »va_list«, »va_arg«, »va_start« und »va_end« ... 708

19.4 ... Die Argumentliste am Anfang oder Ende kennzeichnen ... 709

19.5 ... »vprintf()«, »vsprintf()«, »vfsprintf()« und »vsnsprintf()« ... 714

19.6 ... Variadic Makros -- __VA_ARGS__ ... 719



20. Zeitroutinen ... 723


20.1 ... Die Headerdatei ... 723

20.2 ... Laufzeitmessung (Profiling) ... 735

20.3 ... Besonderheiten beim Raspberry Pi ... 737



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


21.1 ... Testmöglichkeiten und Fehlersuche -- ... 739

21.2 ... Zeichenklassifizierung und Umwandlung -- ... 741

21.3 ... Mathematische Funktionen -- , und ... 746

21.4 ... Einige nützliche Funktionen in ... 759

21.5 ... Länderspezifische Eigenheiten -- ... 779

21.6 ... Nichtlokale Sprünge -- ... 783

21.7 ... Einige nützliche Funktionen in ... 787

21.8 ... Die »mem...«-Funktionen zur Speichermanipulation -- ... 792



22. Dynamische Datenstrukturen ... 797


22.1 ... Lineare Listen (einfach verkettete Listen) ... 797

22.2 ... Doppelt verkettete Listen ... 831

22.3 ... Stacks nach dem LIFO-(Last-in-first-out-)Prinzip ... 849

22.4 ... Queues nach dem FIFO-Prinzip ... 869

22.5 ... Dynamisches Array mit flexiblen Elementen ... 878



23. Algorithmen ... 881


23.1 ... Was sind Algorithmen? ... 881

23.2 ... Beispiele für Algorithmen ... 883



24. MySQL und C ... 989


24.1 ... Aufbau eines Datenbanksystems ... 989

24.2 ... MySQL installieren ... 995

24.3 ... Crashkurs SQL ... 999

24.4 ... Die MySQL-C-API ... 1014

24.5 ... MySQL und C mit CGI ... 1045

24.6 ... Funktionsübersicht ... 1063

24.7 ... Datentypenübersicht der C-API ... 1066

24.8 ... Weiterführende Literatur zu Datenbanken ... 1067



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


25.1 ... Begriffe zur Netzwerktechnik ... 1070

25.2 ... Was sind Sockets und wie legt man sie in C an? ... 1076

25.3 ... Headerdateien für die Netzwerkprogrammierung ... 1077

25.4 ... Das Client-Server-Prinzip ... 1080

25.5 ... Erstellen einer Client-Anwendung ... 1082

25.6 ... Erstellen einer Server-Anwendung ... 1092

25.7 ... Ein einfacher TCP-Echo-Server ... 1098

25.8 ... Cross-Plattform-Development ... 1105

25.9 ... Weitere Anmerkungen zur Netzwerkprogrammierung und Literaturempfehlungen ... 1128



26. Paralleles Rechnen ... 1135


26.1 ... Was ist Multitasking und wie wird es realisiert? ... 1135

26.2 ... Braucht man spezielle Prozessoren für Multitasking? ... 1136

26.3 ... Braucht man spezielle Multitasking-Betriebssysteme? ... 1139

26.4 ... Programmiertechniken der Parallelisierung ... 1139

26.5 ... Vom Prozess zum Thread ... 1140

26.6 ... Mit POSIX-Threads programmieren ... 1144



27. Sicheres Programmieren ... 1153


27.1 ... Buffer Overflow (Speicherüberlauf) ... 1154

27.2 ... Stack Overflow (Stapelüberlauf) ... 1172

27.3 ... Memory Leaks (Speicherlecks) ... 1174

27.4 ... Weiterführende Literatur zu sicherem Programmieren ... 1180



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


28.1 ... GUI-Programmierung -- grafische Oberflächen ... 1182

28.2 ... Grafikprogrammierung unter Windows ... 1185

28.3 ... Grafikprogrammierung unter Linux (Beispiel Raspberry Pi) ... 1197



Anhang ... 1207


A ... Operatoren ... 1207



Index ... 1213

Eigenschaften

Breite: 176
Gewicht: 2134 g
Höhe: 243
Länge: 65
Seiten: 1228
Sprachen: Deutsch
Autor: Jürgen Wolf, René Krooß
Veröffentlichung: 2020-05-27

Bewertung

Bewertungen werden nach Überprüfung freigeschaltet.

Die mit einem * markierten Felder sind Pflichtfelder.

Ich habe die Datenschutzbestimmungen zur Kenntnis genommen.

Zuletzt angesehen

eUniverse.ch - zur Startseite wechseln © 2021 Nova Online Media Retailing GmbH