Jürgen Wolf, René Krooß

C von A bis Z

Das umfassende Handbuch. 5. Auflage
eBook (epub), 1263 Seiten
EAN 9783836295116
Veröffentlicht Juni 2023
Verlag/Hersteller Rheinwerk eBooks

Auch erhältlich als:

Buch (Hardcover)
49,90
39,92 inkl. MwSt.
Sofort Lieferbar (Download)
Teilen
Beschreibung

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

Portrait

Jürgen Wolf ist seit über 16 Jahren Autor und seit mehr als 10 Jahren passionierter Digitalfotograf. Seine Buchthemen sind Bildbearbeitung, Fotografie, Webentwicklung, Betriebssysteme und Programmierung. Und egal welches Thema: Bei jedem Buch ist es sein Ziel, auch komplexe Zusammenhänge klar und verständlich zu erklären.

Inhaltsverzeichnis

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

Technik
Sie können dieses eBook zum Beispiel mit den folgenden Geräten lesen:
• tolino Reader 
Laden Sie das eBook direkt über den Reader-Shop auf dem tolino herunter oder übertragen Sie das eBook auf Ihren tolino mit einer kostenlosen Software wie beispielsweise Adobe Digital Editions. 
• Sony Reader & andere eBook Reader 
Laden Sie das eBook direkt über den Reader-Shop herunter oder übertragen Sie das eBook mit der kostenlosen Software Sony READER FOR PC/Mac oder Adobe Digital Editions auf ein Standard-Lesegeräte. 
• Tablets & Smartphones 
Möchten Sie dieses eBook auf Ihrem Smartphone oder Tablet lesen, finden Sie hier unsere kostenlose Lese-App für iPhone/iPad und Android Smartphone/Tablets. 
• PC & Mac 
Lesen Sie das eBook direkt nach dem Herunterladen mit einer kostenlosen Lesesoftware, beispielsweise Adobe Digital Editions, Sony READER FOR PC/Mac oder direkt über Ihre eBook-Bibliothek in Ihrem Konto unter „Meine eBooks“ -  „online lesen“.
 
Bitte beachten Sie, dass die Kindle-Geräte das Format nicht unterstützen und dieses eBook somit nicht auf Kindle-Geräten lesbar ist.
Hersteller
Libri GmbH
Friedensallee 273

DE - 22763 Hamburg

E-Mail: GPSR@libri.de

Website: www.libri.de

Das könnte Sie auch interessieren

Katharina Zweig
Weiß die KI, dass sie nichts weiß?
eBook (epub)
Sofort lieferbar (Download)
16,99
Roberto Simanowski
Sprachmaschinen
eBook (epub)
Sofort lieferbar (Download)
19,99
Karl Olsberg
Mirror Welt
eBook (epub)
Sofort lieferbar (Download)
0,00
Yuval Noah Harari
NEXUS
eBook (epub)
Sofort lieferbar (Download)
26,99
Sibylle Berg
RCE
eBook (epub)
Sofort lieferbar (Download)
12,99
Ben Aaronovitch
Ein weißer Schwan in Tabernacle Street
eBook (epub)
Sofort lieferbar (Download)
9,99
Marc Elsberg
ZERO - Sie wissen, was du tust
eBook (epub)
Sofort lieferbar (Download)
10,99
Ingo Dachwitz
Digitaler Kolonialismus
eBook (epub)
Sofort lieferbar (Download)
21,99
Sofort lieferbar (Download)
12,99
Karl Olsberg
Mirror
eBook (epub)
Sofort lieferbar (Download)
9,99
Ruth Ware
Zero Days
eBook (epub)
Sofort lieferbar (Download)
12,99
Max Tegmark
Leben 3.0
eBook (epub)
Sofort lieferbar (Download)
14,99
Neal Stephenson
Snow Crash
eBook (epub)
Sofort lieferbar (Download)
14,99
Annekathrin Kohout
Hyperreaktiv
eBook (epub)
Sofort lieferbar (Download)
15,99
Ernest Cline
Ready Player One
eBook (epub)
Sofort lieferbar (Download)
8,99
Michael Kofler
Linux
eBook (pdf)
Sofort lieferbar (Download)
39,92
Andrian Kreye
Der Geist aus der Maschine
eBook (epub)
Sofort lieferbar (Download)
16,99
Cory Doctorow
Wie man einen Toaster überlistet
eBook (epub)
Sofort lieferbar (Download)
2,99
Sofort lieferbar (Download)
21,99
Claus Kühnel
Meshtastic
eBook (epub)
Sofort lieferbar (Download)
23,92
Sofort lieferbar (Download)
9,99
Elisa Hoven
Das Ende der Wahrheit?
eBook (epub)
Sofort lieferbar (Download)
18,99
Sascha Kersken
IT-Handbuch für Fachinformatiker*innen
eBook (epub)
Sofort lieferbar (Download)
31,92
Katharina Zweig
Ein Algorithmus hat kein Taktgefühl
eBook (epub)
Sofort lieferbar (Download)
9,99
Dirk Becker
Einstieg in Linux Mint 22
eBook (epub)
Sofort lieferbar (Download)
23,92
Ernest Cline
Ready Player Two
eBook (epub)
Sofort lieferbar (Download)
12,99
Matthias Matting
Tolino shine - das inoffizielle Handbuch.
eBook (epub)
Sofort lieferbar (Download)
2,99
Detlef Krause
Webtexten für Nicht-Texter
eBook (epub)
Sofort lieferbar (Download)
15,99
Sofort lieferbar (Download)
19,99
Florian Dalwigk
Python Projekte für die Praxis
eBook (epub)
Sofort lieferbar (Download)
22,99
Katharina Zweig
Die KI war's!
eBook (epub)
Sofort lieferbar (Download)
14,99
Ralf-Peter Kleinert
Proxmox VE 8 Powerbuch
eBook (epub)
Sofort lieferbar (Download)
7,99
Inga Strümke
Künstliche Intelligenz
eBook (epub)
Sofort lieferbar (Download)
19,92
Miriam Meckel
Alles überall auf einmal
eBook (epub)
Sofort lieferbar (Download)
12,99
Sofort lieferbar (Download)
0,00
Anton Ochsenkühn
Synology NAS für Apple-User
eBook (epub)
Sofort lieferbar (Download)
0,00