C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken

Gespeichert in:
Bibliographische Detailangaben
Hauptverfasser: Herold, Helmut 1956- (VerfasserIn), Arndt, Jörg 1964- (VerfasserIn)
Format: Buch
Sprache:German
Veröffentlicht: Lohmar Millin 2014
Ausgabe:4., aktualisierte Aufl.
Schlagworte:
Online-Zugang:Inhaltsverzeichnis
Klappentext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!

MARC

LEADER 00000nam a2200000 c 4500
001 BV041470600
003 DE-604
005 20141027
007 t|
008 131210s2014 gw ad|| |||| 00||| ger d
016 7 |a 1044618116  |2 DE-101 
020 |a 9783938626245  |c Pb. : EUR 39.90 (DE), EUR 41.10 (AT)  |9 978-3-938626-24-5 
020 |a 3938626240  |9 3-938626-24-0 
024 3 |a 9783938626221 
035 |a (OCoLC)865130438 
035 |a (DE-599)BVBBV041470600 
040 |a DE-604  |b ger  |e rakddb 
041 0 |a ger 
044 |a gw  |c XA-DE-NW 
049 |a DE-B768  |a DE-11  |a DE-859  |a DE-739  |a DE-523  |a DE-573  |a DE-91G  |a DE-860  |a DE-862  |a DE-92 
082 0 |a 005.133  |2 22/ger 
084 |a ST 250  |0 (DE-625)143626:  |2 rvk 
084 |a DAT 438f  |2 stub 
084 |a DAT 358f  |2 stub 
084 |a DAT 440f  |2 stub 
084 |a 004  |2 sdnb 
100 1 |a Herold, Helmut  |d 1956-  |e Verfasser  |0 (DE-588)122454340  |4 aut 
245 1 0 |a C-Programmierung unter Linux/UNIX/Windows  |b Beispiele, Anwendungen, Programmiertechniken  |c Helmut Herold ; Jörg Arndt 
246 1 3 |a C-Programmierung unter Linux, Unix, Windows 
246 1 3 |a C Programmierung unter Linux, Unix, Windows 
250 |a 4., aktualisierte Aufl. 
264 1 |a Lohmar  |b Millin  |c 2014 
300 |a XVI, 628 S.  |b Ill., graph. Darst. 
336 |b txt  |2 rdacontent 
337 |b n  |2 rdamedia 
338 |b nc  |2 rdacarrier 
650 0 7 |a C  |g Programmiersprache  |0 (DE-588)4113195-2  |2 gnd  |9 rswk-swf 
689 0 0 |a C  |g Programmiersprache  |0 (DE-588)4113195-2  |D s 
689 0 |5 DE-604 
700 1 |a Arndt, Jörg  |d 1964-  |e Verfasser  |0 (DE-588)142015806  |4 aut 
856 4 2 |m Digitalisierung UB Passau - ADAM Catalogue Enrichment  |q application/pdf  |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=026916747&sequence=000003&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA  |3 Inhaltsverzeichnis 
856 4 2 |m Digitalisierung UB Passau - ADAM Catalogue Enrichment  |q application/pdf  |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=026916747&sequence=000004&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA  |3 Klappentext 
943 1 |a oai:aleph.bib-bvb.de:BVB01-026916747 

Datensatz im Suchindex

DE-BY-TUM_call_number 0102 DAT 358f 2014 A 3964(4)
DE-BY-TUM_katkey 2016547
DE-BY-TUM_location 01
DE-BY-TUM_media_number 040080104749
_version_ 1820809169414914048
adam_text Inhaltsverzeichnis 1 Einführendes Beispiel 3 1.1 Erste wesentliche C-Regeln .......... 3 1.2 Zeilen-Kommentare mit//(neu in C99) ....... 5 1.3 Gute Lesbarkeit von Programmen ......... 5 1.4 Vermeiden von geschachtelten Kommentaren ...... 6 2 Elementare Datentypen 7 2.1 Die Grunddatentypen inC .......... 7 2.2 Wertebereiche für die einzelnen Datentypen ....... 9 2.3 Fallgrube: Verlust von Bits bei zu großen Zahlen ...... 10 3 Konstanten 11 3.1 char-Konstanten ............ 11 3.2 Ganzzahlige Konstanten........... 11 3.3 Gleitpunktkonstanten........... 12 4 Variablen 13 4.1 Variablen und die С -Regeln für Variablennamen ...... 13 4.2 Tipps zur Wahl der Variablennamen ........ 14 4.3 Deklaration von Variablen .......... 14 4.4 Tipp: Variablen bereits bei Deklaration dokumentieren .... 16 5 Ausdrücke und Operatoren 17 5.1 Der einfache Zu Weisungsoperator ......... 17 5.1.1 Allgemeines zum einfachen Zuweisungsoperator .... 17 5.1.2 Initialisierung von Variablen ........ 19 5.2 Arithmetische Operatoren.......... 19 5.2.1 Die arithmetischen Operatoren ........ 19 Inhaltsverzeichnis 5.2.2 Die C-Begriffe Ausdruck und Anweisung...... 20 5.2.3 Ausgabe von int-Variablen und -Ausdrücken ..... 21 5.2.4 Ausgabe von Gleitpunkt-Variablen und -Ausdrücken ... 21 5.2.5 Fallgrube: Ganzzahl- statt Gleitpunktdivision ..... 22 5.3 Vergleichsoperatoren........... 23 5.3.1 Die unterschiedlichen Vergleichsoperatoren ..... 23 5.3.2 Die zwei Wahrheitswerte von Vergleichen ...... 23 5.3.3 Prioritäten der Vergleichsoperatoren ....... 23 5.4 Logische Operatoren ........... 24 5.4.1 TRUE und FALSE in С .......... 24 5.4.2 Der Datentyp _Bool (neu in C99) ....... 24 5.4.3 Die C-Operatoren für NOT, AND und OR im Überblick ... 25 5.4.4 Der Negations-Operator !......... 25 5.4.5 Der AND-Operator &&......... 26 5.4.6 Der OR-Operator 11.......... 26 5.4.7 Die Priorität der logischen Operatoren ...... 26 5.4.8 Keine unnötige Auswertung rechts von &&und 11 .... 17 5.4.9 Übung: Überprüfungen mit logischen Operatoren .... 28 5.5 Bit-Operatoren............. 28 5.5.1 Bitweise Invertierung mit ~ ......... 28 5.5.2 Bitweise AND-Verknüpf ung mit &....... 30 5.5.3 Bitweise OR- Verknüpfung mit |........ 31 5.5.4 Bitweise XOR-Verknüpfung mit л ....... 33 5.5.5 Bit-Operatoren nur für ganzzahlige Datentypen erlaubt ... 34 5.5.6 Fallgruben............ 34 5.5.7 Übung: Überprüfungen mit Bit-Operatoren..... 36 5.6 Shift-Operatoren............ 37 5.6.1 Die beiden Shift-Operatoren <<und >>...... 37 5.6.2 Shift-Operatoren nur für ganzzahlige Datentypen erlaubt . . 38 5.6.3 Priorität der Shift-Operatoren........ 38 5.7 Zusammengesetzte Zuweisungsoperatoren ....... 39 5.7.1 Die zusammengesetzten Zuweisungsoperatoren .... 39 5.8 Inkrement- und Dekrement-Operatoren ........ 40 5.8.1 Inkrementieren und Dekrementieren mit++und-- .... 40 5.8.2 Präfix-und Postfix-Schreibweise für++und-- ..... 40 5.8.3 ++und--ist nur für Variablen erlaubt...... 42 5.8.4 ++und--ist nicht auf linken Seite einer Zuweisung erlaubt . . 42 VI Inhaltsverzeichnis 5.9 Prioritätstabelle für Operatoren......... 42 5.10 Assoziativität der Operatoren.......... 43 5.11 Erlaubte und unerlaubte Operationen für C-Datentypen .... 43 5.12 Priorität und Auswertungszeitpunkt bei ++ und -- ..... 43 5.13 Fallgrube: Zugriff auf nicht vorbesetzte Variablen ...... 45 5.14 Übungen............. . 46 6 Symbolische Konstanten 47 6.1 Konstanten-Definition mit #define ......... 47 6.1.1 Die Direktive #define.......... 47 6.1.2 Regeln für Konstanten-Namen bei #define ...... 49 6.1.3 Konstanten machen Programm leicht änderbar ..... 49 6.2 Konstanten-Definition mit const ......... 49 7 Ein- und Ausgabe 51 7.1 Headerdateien und #include......... . 51 7.1.1 Bibliotheken und Headerdateien ....... 51 7.1.2 Eigene Headerdateien .......... 52 7.2 Ein- und Ausgabe eines Zeichens ......... 53 7.2.1 getcharO und putcharO ......... 53 7.2.2 Gepufferte Eingabe bei getchar() ........ 53 7.2.3 Puffer-Bereinigung mit Dummy getchar() ...... 57 7.2.4 Puffer-Bereinigung ist nicht immer notwendig ..... 58 7.2.5 Fallgrube: Zahlen nicht mit getchar() einlesen ..... 60 7.2.6 Die Headerdatei <ctype.h>....... 60 7.2.7 Einfache Makros........... 62 7.3 Die Ausgabe mit printf()........... 67 7.3.1 Die Funktion printfO.......... 67 7.3.2 Fallgruben............ 74 7.3.3 Tipps............. 75 7.4 Die Eingabe mit scanf()........... 77 7AA Die Funktion scanf().......... 77 7.4.2 Fallgruben............ 83 7.4.3 Die Headerdatei <math.h>......... 86 7.4.4 Fallgrube: Vergessen von #include <math.h> ..... 88 8 Datentypumwandlungen 91 8.1 Implizite Datentypumwandlungen ........ 91 VII Inhaltsverzeichnis 8.1.1 Der sizeof-Operator .......... 91 8.1.2 Implizite DatentypumWandlungen....... 93 8.1.3 Fallgrube: Zuweisen von Ganzzahlausdrücken an Gleitpunktvariablen 97 8.2 Explizite Datentypumwandlungen ......... 98 8.2.1 Explizite Datentypumwandlungen mit cast-Operator ... 98 8.2.2 Fallgruben............ 98 9 Die Headerdateien <limits.h und <float.h> 101 9.1 <limits.h> - Grenzwerte von Ganzzahltypen ...... 101 9.2 <float.h> — Grenzwerte von Gleitpunkt-Datentypen ..... 102 10 Anweisungen und Blöcke 103 11 Die if-Anweisung 105 11.1 Die zweiseitige if-Anweisung .......... 105 11.2 Die einseitige if-Anweisung .......... 110 11.3 Verschachtelte if- Anweisungen ......... 112 11.4 Tipp: Einrücken untergeordneter Programmteile ...... 113 11.5 Fallgruben ............. 114 11.5.1 Falsche Gleichheitsüberprüfung ........ 114 11.5.2 Keine unnötige Auswertung rechts von && und II. . . . 115 11.5.3 Vergleiche von negativen Zahlen mit unsigned- Variablen . . 116 11.5.4 Hohe Priorität des Negations-Operators ! . . . . . 116 11.6 Programmiertechniken ........... 117 11.6.1 if-Kaskaden............ 117 12 Die bedingte Bewertung ?: 119 13 Die switch-Anweisung 121 13.1 Die switch-Anweisung ........... 121 13.2 Fallgrube: case-Marken müssen ganzzahlige Konstanten sein . . . 125 13.3 Tipps............... 126 13.3.1 Alle case-Marken (auch letzte) mit break abschließen . . . 126 13.3.2 default immer angeben ......... 126 14 Der Komma-Operator 127 14.1 Der Komma-Operator........... 127 14.2 Komma-Operator hat die niedrigste Priorität ...... 128 VIII Inhaltsverzeichnis 15 Die for- Anweisung 129 15.1 Die f or- Anweisung............ 129 15.2 Die for-Schleife und der Komma-Operator....... 133 15.3 Fallgrube: Semikolon am Ende des for-Schleifenkopfs..... 136 15.4 Geschachtelte Schleifen........... 137 15.5 Eine endlose for-Schleife........... 143 15.6 for bei Durchläufen mit festen Schrittweiten....... 143 15.7 Variablendeklaration im for-Schleifenkopf (neu in C99) .... 146 15.8 Programmiertechniken ........... 146 15.8.1 Anhalten einer Bildschirmausgabe ....... 146 15.8.2 Zeilenvorschübe bei geschachtelten Schleifen ..... 149 15.8.3 Kombinieren mit for-Schleifen ........ 150 15.8.4 Zwischeninformationen bei rechenintensiven Programmen . . 152 15.8.5 Merker in for-Schleifen bei Eintreten von Ereignissen . . . 153 15.9 Fallgruben ............. 154 15.9.1 Niemals die Laufvariable im Schleifenkörper ändern . . . 154 15.9.2 Gleitpunktzahlen niemals auf Gleichheit prüfen .... 157 15.9.3 Laufvariable einer for-Schleife läuft über Endwert hinaus . . 159 16 Die while-Anweisung 161 16.1 Die while-Anweisung ........... 161 16.2 Programmiertechniken ........... 163 16.2.1 while bei unbekannter Zahl von Schleifendurchläufen . . . 163 16.2.2 Konsistenzprüfungen bei Eingaben ....... 165 16.2.3 Die Konstante eof .......... 166 16.2.4 Minimum und Maximum in einer Zahlenfolge ..... 167 16.3 Zufallszahlen in С ............ 168 T7 Die do. .. while- Anweisung 175 17.1 Die do. .. while-Anweisung .......... 175 17.2 Programmiertechniken ........... 177 17.2.1 do. .. while-Schleifen nicht so oft wie while-Schleifen . . . 177 17.2.2 Abschließendes } while immer in einer Zeile .... 178 18 Die break- Anweisung 179 18.1 Die break-Anweisung........... 179 18.2 break bewirkt Verlassen einer Schleifenebene ...... 180 18.3 Programmiertechniken ........... 180 IX Inhaltsverzeichnis 18.3.1 Sofortiges Verlassen von Schleifen und switch ..... 180 18.3.2 Endlosschleifen und break ......... 182 19 Die continue-Anweisung 183 19.1 Die continue-Anweisung ........... 183 19.2 Programmiertechniken ........... 184 19.2.1 continue nur im äußersten Notfall....... 184 19.2.2 Korrekte Programme müssen auch schnell sein..... 185 19.3 Datums- und Zeitangaben (<time.h>)........ 189 19.3.1 Konstanten und Datenytpen........ 189 19.3.2 Funktionen............ 189 19.3.3 Beispiele zu Funktionen aus <time.h>...... 192 20 Marken und die goto-Anweisung 197 20.1 Marken und die goto-Anweisung . . . . . . . . . 197 20.2 Programmiertechniken ........... 197 20.2.1 goto nur im äußersten Notfall........ 197 20.2.2 Lesbarere und schnellere Programme mit goto..... 198 21 Grafikprogrammierung unter Linux 199 21.1 Benutzung von LCGI........... 199 21.2 Grafikmodus ein- und ausschalten ......... 200 21.3 Eingaben im Grafikmodus .......... 200 21.4 Bildschirm-, Farben- und Pixel-Operationen ....... 204 21.5 Positionieren, Linien zeichnen und Farbe einstellen ..... 207 21.6 Figuren zeichnen und ausfüllen ......... 209 21.7 Einstellungen für Textausgaben ......... 215 21.8 Bilder laden, Bildteile speichern und einblenden ...... 217 21.9 Kuchenstücke malen ........... 220 21.lOGrafikpaket neu bzw. anders einrichten ........ 222 21.11 Arbeiten mit mehreren Zeichenfenstern ........ 223 21.12Programmierung der Maus .......... 223 21.^Transformation mathematischer Koordinaten ...... 226 22 Funktionen 231 22.1 Allgemeines zu Funktionen .......... 231 22.1.1 Allgemeines Beispiel zu Funktionen ....... 231 22.1.2 Die Begriffe Parameter und Argumente...... 233 X Inhaltsverzeichnis 22.1.3 Bibliotheken und Headerdateien ....... 233 22.2 Erstellen eigener Funktionen .......... 234 22.2.1 Definition von Funktionen in C89/C99...... 234 22.2.2 Definition von Funktionen in Alt-C....... 237 22.2.3 Die return-Anweisung.......... 238 22.2.4 Funktionen ohne Rückgabewert........ 238 22.2.5 Forward-Deklarationen ......... 239 22.2.6 Funktions-Prototypen.......... 242 22.2.7 Implizite Datentypumwandlung beim Funktionsaufruf . . . 246 22.2.8 Typische Anwendungsgebiete von Funktionen ..... 248 22.3 Die Parameter von Funktionen ......... 253 22.3.1 Leere Parameterliste durch Angabe von void ..... 253 22.3.2 Bei Funktionsaufrufen findet nur Wertübergabe statt . . . 253 22.3.3 Call by reference........... 258 22.3.4 Auswertung der Argumente findet vor Funktionsaufruf statt . . 260 22.3.5 Fallgruben............ 261 22.4 Ellipsen-Prototypen für Funktionen mit variabler Argumentzahl . . 263 22.4.1 Reihenfolge der Argument-Ablage im Stack ..... 263 22.4.2 Ellipsen-Prototypen.......... 264 22.4.3 Abarbeiten variabel langer Argumentlisten ..... 264 22.4.4 Verfahren zum Abarbeiten variabel langer Argumentlisten . . 265 22.4.5 Fallgruben............ 269 22.5 Neuheiten in C99............ 270 22.5.1 Inline-Funktionen .......... 270 22.5.2 Der vordefinierte Name__ fune __....... 271 22.5.3 Keine Unterstützung von implizitem int ...... 272 22.5.4 Keine impliziten Funktionsdeklarationen ...... 272 22.5.5 Einschränkungen bei return ........ 272 22.6 Rekursive Funktionen........... 273 22.6.1 Allgemeines zu rekursiven Funktionen ...... 273 22.6.2 Einige typische Anwendungen für die Rekursion .... 276 22.7 Zeiger auf Funktionen........... 280 22.7.1 Zeiger auf Funktionen.......... 280 22.7.2 Typische Anwendungen ......... 283 23 Speicherklassen und Modultechnik 287 23.1 Gültigkeitsbereich, Lebensdauer, Speicherort ...... 287 XI Inhaltsverzeichnis 23.1.1 Gültigkeitsbereich .......... 287 23.1.2 Lebensdauer............ 291 23.1.3 Speicherort............ 292 23.1.4 Gültigkeit, Lebensdauer und Speicherort im Überblick . . . 292 23.1.5 Übung: Ausgabe des Programms ЫоскЗ . с ..... 293 23.2 Schlüsselwörter extern, auto, static und register ...... 293 23.2.1 Das Schlüsselwort extern......... 293 23.2.2 Das Schlüsselwort auto ......... 296 23.2.3 Fallgrube: Niemals Adressen von auto-Variablen zurückgeben . 303 23.2.4 Das Schlüsselwort static ......... 304 23.2.5 Das Schlüsselwort register ......... 310 23.3 Die Schlüsselwörter const und volatile ........ 310 23.3.1 Das Schlüsselwort const ......... 310 23.3.2 Das Schlüsselwort volatile ......... 312 23.3.3 Kombination von const und volatile ....... 313 23.4 Modultechnik und Information Hiding ........ 314 23.4.1 Linker und Compiler.......... 317 23.4.2 Beispiel: Simulation von Turingmaschinen ..... 319 24 Präprozessor-Direktiven 331 24.1 Bedingte Kompilierung........... 332 24.1.1 Präprozessor-Direktiven zur bedingten Kompilierung . . . 332 24.1.2 Typische Anwendungen ......... 334 24.1.3 Testen mit Makro assert() aus Headerdatei <assert.h> . . . 339 24.2 Einkopieren von anderen Headerdateien ....... 340 24.2.1 Die Präprozessor-Direktive #include ....... 340 24.2.2 Typische Anwendungen ......... 341 24.3 Definition von Makros (#define und #undef)....... 342 24.3.1 Definition von Konstanten mit #define ...... 342 24.3.2 Definition von Funktionsmakros mit #define..... 343 24.3.3 Operator #: Ersetzung von Makroparametern durch String . . 345 24.3.4 Operator ##: Zusammensetzen neuer Namen..... 346 24.3.5 Rekursive Makrodefinitionen ........ 346 24.3.6 Makros mit variabler Anzahl von Argumenten (neu in C99) . . 348 24.3.7 Makrodefinitionen mit #undef wieder aufheben .... 349 24.3.8 Unterschiede zwischen Funktionen und Makros .... 349 24.4 Vordefinierte Makronamen.......... 353 XII Inhaltsverzeichnis 24.5 Die restlichen Präprozessor-Direktiven........ 354 24.5.1 #line — Festlegen einer neuen Zeilennumerierung .... 354 24.5.2 #error — Ausgeben von Fehlermeldungen ...... 355 24.5.3 #pragma — Festlegen von compilerspezifischem Verhalten . . 355 24.5.4 #-Die Null-Direktive.......... 355 25 Zeiger und Arrays 357 25.1 Eindimensionale Arrays ........... 357 25.1.1 Eindimensionale Arrays ......... 357 25.1.2 Nur statische Arrays erlaubt (in C89)....... 361 25.1.3 Von Arrays belegter Speicherplatz ....... 362 25.1.4 Fallgruben............ 363 25.2 Mehrdimensionale Arrays .......... 365 25.2.1 Zweidimensionale Arrays ......... 365 25.2.2 Drei-, vier-, fünf- und sonstige mehrdimensionale Arrays . . 373 25.2.3 sizeof liefert die Größe eines Arrays ....... 373 25.3 Zusammenhänge zwischen Arrays und Zeigern ...... 374 25.3.1 Arrayname ist konstanter Zeiger auf erstes Element .... 374 25.3.2 Zugriff auf Arrayelemente ist auch über Zeiger möglich . . . 377 25.3.3 Unterschied zwischen Arraynamen und echtem Zeiger . . . 380 25.3 A Erlaubte Operationen mit Zeigern ....... 381 25.3.5 Unerlaubte Operationen mit Zeigern ....... 381 25.3.6 Übergabe eines Arrays an eine Funktion mittels Adresse . . . 384 25.3.7 call by value für Arrays (Zeiger)........ 388 25.3.8 Nachlese zu Arrays und Zeiger ........ 389 25.3.9 Algorithmus: Der Bubble-Sort ........ 389 25.3.10 Verwendung der Bibliotheksfunktion qsort() ..... 390 25.4 Strings und char-Zeiger ........... 392 25.4.1 Besonderheiten von C-Strings ........ 392 25.4.2 Das Schlüsselwort restrict für Zeiger (neu in C99) .... 394 25.4.3 Eigene Realisierung der Funktion strcpy() mit Arrays . . . 394 25.4.4 Eigene Realisierung der Funktion strcpy() mit Zeigern . . . 395 25.4.5 Die Headerdatei <string.h>......... 398 25.4.6 Umwandeln von Strings in numerische Werte ..... 413 25.4.7 Umwandeln von numerischen Werten in Strings .... 419 25.4.8 Besonderheiten beim Einlesen von Strings mit scanf() . . . 421 25.4.9 Ein- und Ausgabe von Strings mit getsQ und putsQ .... 422 XIII Inhaltsverzeichnis 25.4.10 Unterschied zwischen Zeiger-und Array-Deklaration . . . 423 25.4.11 Direkter Zugriff auf Zeichen in einer String-Konstante . . . 425 25.5 Array-Initialisierungen ........... 426 25.5.1 Initialisierung von Arrays ......... 426 25.5.2 Dimensionierungsangaben bei der Initialisierung .... 428 25.5.3 Zeiger auf unbenamte Arrays (neu in C99) ..... 429 25.5.4 Implizite Initialisierung bei sta tic- Variablen/ Arrays .... 430 25.5.5 Initialisierung lokaler Variablen auch mit Nicht-Konstanten . . 431 25.5.6 Initialisierung von lokalen Arrays in C89/C99..... 432 25.5.7 Initialisierung von lokalen Arrays mit variablen Werten (neu in C99) 432 25.5.8 Initialisierung von lokalen Arrays mit 0 oder NULL .... 433 25.5.9 Initialisierte Arrays mit const vor Überschreiben schützen . . 434 25.6 Lokale Arrays variabler Länge (neu in C99) ....... 435 25.7 Zeigerarrays und Zeiger auf Zeiger ........ 436 25.7.1 Einfache Zeigerarrays .......... 436 25.7.2 Zeiger auf Arrays ........... 437 25.7.3 Vertauschen von zwei Arrays über Zeiger ...... 438 25.7.4 Übergabe von Arrays an Funktionen ....... 440 25.7.5 Zeiger-Zeiger ........... 441 25.7.6 Unterschiede bei zweidimensionalen Arrays und Zeigerarrays . 442 25.7.7 Zugriff auf beliebige Elemente in einem Zeigerarray . . . 445 25.7.8 Zeigerarrays mit Funktionsadressen ....... 451 26 Argumente auf der Kommandozeile 453 26.1 Die Parameter arge und argv der Funktion main() ..... 453 26.2 Optionen auf der Kommandozeile ......... 456 27 Dynamische Speicher-Reservierung und-Freigabe 463 27.1 Nachteile von statischen Arrays ......... 463 27.1.1 Gefahr der Speicherüberschreibung....... 464 27.1.2 Speicherplatzvergeudung ......... 465 27.2 Speicher reservieren mit malloc() ......... 466 27.2.1 Die Funktion mallocO.......... 466 27.2.2 Dynamische Arrays für beliebige Datentypen ..... 470 27.2.3 Konvertierung von void-Zeigern ....... 473 27.3 Speicher reservieren und initialisieren mit callocO ..... 474 27.4 Größenänderung eines allozierten Speichers mit reallocQ .... 475 XIV Inhaltsverzeichnis 27.4.1 Die Funktion reallocO.......... 475 27.4.2 Besonderheiten der Funktion reallocO ...... 478 27.4.3 Schnellere Programme mit größeren Speicherblöcken . . . 479 27.5 Freigeben von dynamisch reservierten Speicherbereich . . . . 481 27.5.1 Die Funktion free().......... 481 27.5.2 Fallgrube: free() setzt übergebenen Zeiger nicht auf NULL . . 481 27.5.3 Tipp: Eigenes Makro zur Freigabe von dynamischen Speicher . . 483 27.6 Fallgruben ............. 484 27.6.1 free() nur auf von mallocO, callocO und reallocO gelieferte Zeiger . 484 27.6.2 Allozieren von Speicherplatz in einer Funktion ..... 485 27.7 Programmiertechnik: Dynamische Zeiger- Arrays ...... 488 27.8 Fallgrube: free() bei Zeiger-Arrays........ . 489 28 Strukturen 491 28.1 Deklaration und Definition von Strukturen ....... 491 28.1.1 Deklaration von Strukturen......... 491 28.1.2 Wichtige Regeln und Hinweise für Strukturdeklarationen . . 492 28.1.3 Definition von Strukturvariablen ....... 493 28.1.4 Zusammenfassung von Strukturdeklaration und -definition . . 494 28.1.5 Namenlose Strukturen.......... 495 28.2 Operationen mit Strukturvariablen........ 496 28.2.1 Zugriff auf Strukturkomponenten mittels Punktoperator . . . 496 28.2.2 Zuweisung zwischen Strukturkomponenten ..... 497 28.2.3 Zuweisung ganzer Strukturvariablen ....... 502 28.2.4 Vergleich von Strukturvariablen ist nicht möglich .... 502 28.2.5 Casting für komplette Strukturvariable ist nicht möglich . . . 503 28.2.6 Adreß- und sizeof-Opera tor für Strukturvariablen erlaubt . . 503 28.3 Initialisierung von Strukturvariablen ........ 504 28.3.1 Initialisierung von Strukturvariablen in C89 und C99 . . . 504 28.3.2 Initialisierung von Strukturvariablen (nur in C99) .... 505 28.4 Struktur arrays ............. 507 28.5 Strukturen als Funktionsparameter ........ 514 28.6 Zeiger und Strukturen ........... 516 28.6.1 Allgemeines zu Zeiger und Strukturen . . . . . . 516 28.6.2 Dynamische Strukturarrays ........ 522 28.6.3 Rekursive Strukturen.......... 529 28.7 Strukturen mit variabel langen Arrays (neu in C99) ..... 558 XV Inhaltsverzeichnis 28.8 Spezielle Strukturen (Unions und Bitfelder)....... 559 28.8.1 Unions ............. 559 28.8.2 Bitfelder ............ 564 29 Eigene Datentypen 569 29.1 Definition eigener Datentypnamen mit typedef...... 569 29.1.1 Vergabe neuer Namen an existierende Datentypen mit typedef . 569 29.1.2 Höhere Portabilität und bessere Lesbarkeit durch typedef . . 572 29.2 Definition eigener Datentypen mit enum ....... 573 29.2.1 Definition eigener Datentypen mit enum ...... 573 29.2.2 Regeln für enum........... 575 30 Dateien 577 30.1 Höhere E/A-Funktionen........... 577 30.1.1 Vordefinierte Struktur FILE......... 578 30.1.2 Öffnen und Schließen von Dateien....... 578 30.1.3 Lesen und Schreiben in Dateien........ 580 30.1.4 Unterschied zwischen Text-und Binärmodus..... 596 30.1.5 Positionieren in Dateien ......... 598 30.1.6 Öffnen einer Datei mit existierenden Stream ..... 601 30.1.7 Löschen und Umbenennen von Dateien ...... 603 30.1.8 Pufferung............ 603 30.1.9 Temporäre Dateien .......... 605 30.1.10 Ausgabe von System-Fehlermeldungen ...... 608 31 Anhang 613 31.1 Prioritätstabelle für die Operatoren ........ 613 31.2 C-Schlüsselwörter............ 613 31.3 Wertebereiche für die einzelnen Datentypen ....... 614 31.4 Die Funktion printf() ........... 615 31.5 Die Funktion scanfO ........... 617 31.6 ASCII-Tabelle............. 619 XVI Dieses Buch beschreibt die Programmiersprache С anhand vie¬ ler anschaulicher Beispiele, die ausführlich mit Programmcode vorgestellt werden. Von Anfang an geht dieses Buch dabei in¬ tensiv auf C99, den aktuellen Standard für C, ein. Die Autoren begnügen sich jedoch nicht allein mit der Vorstel¬ lung der einzelnen Sprachelemente, sondern vermitteln auch Einblicke in wichtige Grundlagen der Informatik. Darüber hin¬ aus werden zu den einzelnen C-Konstruktionen effektive Pro¬ grammiertechniken aus der Praxis und typische Anwen¬ dungsgebiete der Programmiersprache С im Detail vorgestellt. Zu den wichtigsten Themen finden sich in dem Buch zudem vielfältige Tipps sowie Hinweise zur Vermeidung von Fallgru- ben , die in С leider nicht allzu selten sind. Diese Grundkenntnisse bilden das Fundament, das für eine er¬ folgreiche Programmierung in С unverzichtbar ist. Ein eigenes Kapitel ist der Graphikbibliothek LCGI (Linux С Gra¬ phics Interface) gewidmet, die eigens im Rahmen dieses Bu¬ ches entwickelt wurde. Mit LCGI ist nunmehr eine einfache Graphikprogrammierung in С unter Linux möglich. Mit diesem Buch wird: - der С -Neuling systematisch vom C-Basiswissen bis hin zu den fortgeschrittenen Techniken der Programmierung geführt und - dem bereits erfahrenen C-Programmierer - aufgrund der Viel¬ zahl von Tipps, fundamentalen Algorithmen und nützlichen Programmiertechniken - eine Vertiefung bzw. Ergänzung sei¬ nes С -Wissens ermöglicht
any_adam_object 1
author Herold, Helmut 1956-
Arndt, Jörg 1964-
author_GND (DE-588)122454340
(DE-588)142015806
author_facet Herold, Helmut 1956-
Arndt, Jörg 1964-
author_role aut
aut
author_sort Herold, Helmut 1956-
author_variant h h hh
j a ja
building Verbundindex
bvnumber BV041470600
classification_rvk ST 250
classification_tum DAT 438f
DAT 358f
DAT 440f
ctrlnum (OCoLC)865130438
(DE-599)BVBBV041470600
dewey-full 005.133
dewey-hundreds 000 - Computer science, information, general works
dewey-ones 005 - Computer programming, programs, data, security
dewey-raw 005.133
dewey-search 005.133
dewey-sort 15.133
dewey-tens 000 - Computer science, information, general works
discipline Informatik
edition 4., aktualisierte Aufl.
format Book
fullrecord <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>02182nam a2200481 c 4500</leader><controlfield tag="001">BV041470600</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20141027 </controlfield><controlfield tag="007">t|</controlfield><controlfield tag="008">131210s2014 gw ad|| |||| 00||| ger d</controlfield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">1044618116</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9783938626245</subfield><subfield code="c">Pb. : EUR 39.90 (DE), EUR 41.10 (AT)</subfield><subfield code="9">978-3-938626-24-5</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">3938626240</subfield><subfield code="9">3-938626-24-0</subfield></datafield><datafield tag="024" ind1="3" ind2=" "><subfield code="a">9783938626221</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)865130438</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV041470600</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rakddb</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">ger</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">gw</subfield><subfield code="c">XA-DE-NW</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-B768</subfield><subfield code="a">DE-11</subfield><subfield code="a">DE-859</subfield><subfield code="a">DE-739</subfield><subfield code="a">DE-523</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-91G</subfield><subfield code="a">DE-860</subfield><subfield code="a">DE-862</subfield><subfield code="a">DE-92</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.133</subfield><subfield code="2">22/ger</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 438f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 358f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 440f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">004</subfield><subfield code="2">sdnb</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Herold, Helmut</subfield><subfield code="d">1956-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)122454340</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">C-Programmierung unter Linux/UNIX/Windows</subfield><subfield code="b">Beispiele, Anwendungen, Programmiertechniken</subfield><subfield code="c">Helmut Herold ; Jörg Arndt</subfield></datafield><datafield tag="246" ind1="1" ind2="3"><subfield code="a">C-Programmierung unter Linux, Unix, Windows</subfield></datafield><datafield tag="246" ind1="1" ind2="3"><subfield code="a">C Programmierung unter Linux, Unix, Windows</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">4., aktualisierte Aufl.</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Lohmar</subfield><subfield code="b">Millin</subfield><subfield code="c">2014</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XVI, 628 S.</subfield><subfield code="b">Ill., graph. Darst.</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">C</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4113195-2</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">C</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4113195-2</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Arndt, Jörg</subfield><subfield code="d">1964-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)142015806</subfield><subfield code="4">aut</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Passau - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&amp;doc_library=BVB01&amp;local_base=BVB01&amp;doc_number=026916747&amp;sequence=000003&amp;line_number=0001&amp;func_code=DB_RECORDS&amp;service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Passau - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&amp;doc_library=BVB01&amp;local_base=BVB01&amp;doc_number=026916747&amp;sequence=000004&amp;line_number=0002&amp;func_code=DB_RECORDS&amp;service_type=MEDIA</subfield><subfield code="3">Klappentext</subfield></datafield><datafield tag="943" ind1="1" ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-026916747</subfield></datafield></record></collection>
id DE-604.BV041470600
illustrated Illustrated
indexdate 2024-12-24T03:57:20Z
institution BVB
isbn 9783938626245
3938626240
language German
oai_aleph_id oai:aleph.bib-bvb.de:BVB01-026916747
oclc_num 865130438
open_access_boolean
owner DE-B768
DE-11
DE-859
DE-739
DE-523
DE-573
DE-91G
DE-BY-TUM
DE-860
DE-862
DE-BY-FWS
DE-92
owner_facet DE-B768
DE-11
DE-859
DE-739
DE-523
DE-573
DE-91G
DE-BY-TUM
DE-860
DE-862
DE-BY-FWS
DE-92
physical XVI, 628 S. Ill., graph. Darst.
publishDate 2014
publishDateSearch 2014
publishDateSort 2014
publisher Millin
record_format marc
spellingShingle Herold, Helmut 1956-
Arndt, Jörg 1964-
C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken
C Programmiersprache (DE-588)4113195-2 gnd
subject_GND (DE-588)4113195-2
title C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken
title_alt C-Programmierung unter Linux, Unix, Windows
C Programmierung unter Linux, Unix, Windows
title_auth C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken
title_exact_search C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken
title_full C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken Helmut Herold ; Jörg Arndt
title_fullStr C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken Helmut Herold ; Jörg Arndt
title_full_unstemmed C-Programmierung unter Linux/UNIX/Windows Beispiele, Anwendungen, Programmiertechniken Helmut Herold ; Jörg Arndt
title_short C-Programmierung unter Linux/UNIX/Windows
title_sort c programmierung unter linux unix windows beispiele anwendungen programmiertechniken
title_sub Beispiele, Anwendungen, Programmiertechniken
topic C Programmiersprache (DE-588)4113195-2 gnd
topic_facet C Programmiersprache
url http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=026916747&sequence=000003&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA
http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=026916747&sequence=000004&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA
work_keys_str_mv AT heroldhelmut cprogrammierungunterlinuxunixwindowsbeispieleanwendungenprogrammiertechniken
AT arndtjorg cprogrammierungunterlinuxunixwindowsbeispieleanwendungenprogrammiertechniken
AT heroldhelmut cprogrammierungunterlinuxunixwindows
AT arndtjorg cprogrammierungunterlinuxunixwindows