PORTO-
FREI

C von A bis Z

Das umfassende Handbuch für C-Programmierer. Zum Lernen und Nachschlagen. Aktuell zum Standard C18

von Wolf, Jürgen / Krooß, René   (Autor)

Unser beliebter Klassiker neu aufgelegt! Zum aktuellen Standard und mit einem Autorenteam aus Praxis und Lehre. Ansonsten bleibt aus gutem Grund vieles beim Alten. 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

Buch (Gebunden)

EUR 44,90

Alle Preisangaben inkl. MwSt.

Auch verfügbar als:

SOFORT LIEFERBAR (am Lager)

Versandkostenfrei*

Versandtermin: 22. September 2021, wenn Sie jetzt bestellen.
(innerhalb Deutschlands, Sendungen in Geschenkverpackung: + 1 Werktag)

 
 

Produktbeschreibung

Unser beliebter Klassiker neu aufgelegt! Zum aktuellen Standard und mit einem Autorenteam aus Praxis und Lehre. Ansonsten bleibt aus gutem Grund vieles beim Alten. 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 

Inhaltsverzeichnis

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 

Autoreninfo

Wolf, JürgenJü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.Krooß, Ren‚Diplrm. (FH) der Informatik 

Mehr vom Verlag:

Rheinwerk Verlag GmbH

Mehr aus der Reihe:

Rheinwerk Computing

Mehr vom Autor:

Wolf, Jürgen / Krooß, René

Produktdetails

Medium: Buch
Format: Gebunden
Seiten: 1228
Sprache: Deutsch
Erschienen: Mai 2020
Auflage: 4. Auflage
Sonstiges: 459/03973
Maße: 249 x 186 mm
Gewicht: 2142 g
ISBN-10: 3836239736
ISBN-13: 9783836239738
Verlagsbestell-Nr.: 459/03973

Bestell-Nr.: 28891140 
Libri-Verkaufsrang (LVR): 108373
Libri-Relevanz: 18 (max 9.999)
Bestell-Nr. Verlag: 459/03973

LIBRI: 2522380
LIBRI-EK*: 31.47 € (25.00%)
LIBRI-VK: 44,90 €
Libri-STOCK: 3
* EK = ohne MwSt.

UVP: 0 
Warengruppe: 16330 

KNO: 81700194
KNO-EK*: 25.15 € (25.00%)
KNO-VK: 44,90 €
KNV-STOCK: 5

KNO-SAMMLUNG: Rheinwerk Computing
KNOABBVERMERK: 4. Aufl. 2020. 1228 S. 24 cm
KNOSONSTTEXT: 459/03973
KNOZUSATZTEXT: Bisherige Ausg. siehe T.-Nr. 22613094
Einband: Gebunden
Auflage: 4. Auflage
Sprache: Deutsch

Alle Preise inkl. MwSt., innerhalb Deutschlands liefern wir immer versandkostenfrei. Informationen zum Versand ins Ausland.

Kostenloser Versand*

innerhalb eines Werktages

OHNE RISIKO

30 Tage Rückgaberecht

Käuferschutz

mit Geld-Zurück-Garantie