Suchen und Finden

Titel

Autor/Verlag

Inhaltsverzeichnis

Nur eBooks für mein Endgerät anzeigen:

 

Newsletter

Go to C-Programmierung - Das Lern- und Nachschlagewerk für den C-Programmierer. Erfolgreich durch Übungen, Beispiele, Programmierrezepte

Go to C-Programmierung - Das Lern- und Nachschlagewerk für den C-Programmierer. Erfolgreich durch Übungen, Beispiele, Programmierrezepte

von: Guido Krüger

Addison-Wesley Verlag, 2007

ISBN: 9783827326119, 817 Seiten

Format: PDF, OL

Mac OSX,Windows PC Apple iPad, Android Tablet PC's Online-Lesen für: Linux,Mac OSX,Windows PC

Preis: 19,95 EUR

Ersparnis: 10,00 EUR

  • easy C
    C++ echt einfach
    Samba-Server 3 für kleine und mittlere Netze. Einrichtung, Konfiguration, Benutzerverwaltung
    C in 21 Tagen - Schritt für Schritt zum Profi
    Einstieg in C++ - 4. Auflage
    Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren
    Postfix
    PHP 5 & MySQL 4 - Der leichte Einstieg
 

Mehr zum Inhalt

Go to C-Programmierung - Das Lern- und Nachschlagewerk für den C-Programmierer. Erfolgreich durch Übungen, Beispiele, Programmierrezepte


 

GoTo C-Programmierung

1

Inhaltsverzeichnis

6

Rezeptübersicht

6

Vorwort

6

Teil I Grundlagen

6

1 Der Einstieg

6

2 Ausdrücke

7

3 Anweisungen

7

4 Der Präprozessor

8

5 Arrays

8

6 Funktionen

9

7 Datenstrukturen

9

8 Bildschirm-I/O

10

9 Datei-I/O

10

10 Zeiger • erster Teil

10

11 Zeiger • zweiter Teil

11

12 Tips und Tricks

12

Teil II Werkzeug

13

13 Compiler und Linker

13

14 GNU-Emacs

13

15 Debugging und Profiling

14

16 Projektverwaltung mit make

14

17 Versionskontrolle mit RCS

15

Teil III Referenz

15

18 Die Standard-Library

15

Anhang

15

A Syntax

15

B Operator-Reihenfolg

15

C Literaturhinweise

15

D Zeichensatztabellen

15

Stichwortverzeichnis

15

Rezeptübersicht

16

Vorwort

18

Vorwort zur 3. Auflage

18

Vorwort zur 2. Auflage

19

Vorwort zur 1. Auflage

19

Teil I - Grundlagen

22

1 Der Einstieg

24

1.1 Die Icons in diesem Buch

25

1.2 Zum Arbeiten mit dem Buch

25

1.2.1 Voraussetzungen

25

1.2.2 Ziel des Buches

26

1.2.3 Aufbau des Buches

26

1.2.4 Syntaxdiagramme

29

1.3 Das »hello-world«-Programm

30

1.3.1 Lexikalische Bestandteile

31

1.3.2 Kommentar

31

1.3.3 Hauptfunktion

32

1.3.4 Geschweifte Klammern

33

1.3.5 Anweisung

33

1.3.6 Semikolon

34

1.3.7 Stringkonstante

34

1.3.8 Namenskonventionen

34

1.4 Elementare Datentypen

35

1.4.1 Standardtypen

35

1.4.2 char

36

1.4.3 int

37

1.4.4 float und double

38

1.5 Literale Konstanten

39

1.5.1 char

39

1.5.2 int

40

1.5.3 float und double

41

1.5.4 Stringkonstanten

42

1.6 Definition von Variablen

42

1.6.1 Sichtbarkeit und Lebensdauer

43

1.6.2 Automatische und manuelle Initialisierung

46

1.7 Kompilieren und Linken von C-Programmen

47

1.7.1 Der Turnaround-Zyklus

47

1.7.2 Übersetzen der Beispielprogramme

49

1.8 Aufgaben zu Kapitel 1

49

1.9 Lösungen zu ausgewählten Aufgaben

51

2 Ausdrücke

58

2.1 Definitionen und Begriffe

59

2.1.1 Operator

59

2.1.2 Operand

59

2.1.3 Ausdruck

60

2.1.4 Rückgabewert

60

2.1.5 Gruppierung

62

2.1.6 Assoziativität

63

2.1.7 lvalues und rvalues

63

2.1.8 Nebeneffekte

63

2.2 Beschreibung der Operatoren

64

2.2.1 Arithmetische Operatoren

64

2.2.2 Zuweisungsoperatoren

67

2.2.3 Inkrement- und Dekrement-Operatoren

70

2.2.4 Relationale Operatoren

72

2.2.5 Logische Operatoren

75

2.2.6 Bitweise Operatoren

78

2.2.7 Sonstige Operatoren

82

2.3 Implizite Typkonvertierungen

89

2.4 Auswertungsreihenfolge

91

2.4.1 Sonderfälle

93

2.5 Ein-/Ausgaben

96

2.6 Aufgaben zu Kapitel 2

97

2.7 Lösungen zu ausgewählten Aufgaben

105

3 Anweisungen

114

3.1 Grundlegende Anweisungen

115

3.1.1 Ausdrucksanweisungen

115

3.1.2 Die leere Anweisung

117

3.1.3 Blöcke

117

3.2 Schleifen

120

3.2.1 while-Schleife

121

3.2.2 do-Schleife

123

3.2.3 for-Schleife

125

3.3 Bedingte Anweisungen

128

3.3.1 if-Anweisung

128

3.3.2 elseif-Anweisung

132

3.3.3 switch-Anweisung

133

3.4 Sprunganweisungen

136

3.4.1 break

136

3.4.2 continue

137

3.4.3 goto/Label

138

3.4.4 return-Anweisung

140

3.5 Aufgaben zu Kapitel 3

141

3.6 Lösungen zu ausgewählten Aufgaben

147

4 Der Präprozessor

160

4.1 Funktionsweise des Präprozessors

161

4.1.1 Phasen des Compilerlaufs

161

4.1.2 Präprozessor-Syntax

162

4.2 Einbinden von Dateien

162

4.2.1 Die #include-Anweisung

162

4.2.2 Standard-Header-Dateien

164

4.2.3 Eigene Header-Dateien

165

4.3 Makrodefinitionen

166

4.3.1 Die #define-Anweisung

166

4.3.2 Makros ohne Ersetzungstext

171

4.3.3 Parametrisierte Makros

171

4.3.4 Die #undef-Anweisung

174

4.4 Bedingte Kompilierung

175

4.4.1 Die #ifdef-Anweisung

175

4.4.2 Debugging

177

4.4.3 Portierbarkeit

178

4.4.4 Die #if-Anweisung

179

4.5 Sonstige Präprozessorfähigkeiten

181

4.5.1 Informationen über die Quelldatei abfragen

181

4.5.2 Der String-Operator #

181

4.5.3 Der -D-Schalter des Compilers

182

4.6 Aufgaben zu Kapitel 4

183

4.7 Lösungen zu ausgewählten Aufgaben

186

5 Arrays

192

5.1 Definition eines Arrays

193

5.1.1 Speicherbedarf

195

5.1.2 Arraygrenzen

196

5.2 Zugriff auf das Array

196

5.2.1 Zugriff auf einzelne Elemente

196

5.2.2 Prüfung der Bereichsgrenzen

198

5.2.3 Zugriff auf das ganze Array

200

5.3 Initialisierung von Arrays

203

5.3.1 Implizite Längenbestimmung

205

5.4 Mehrdimensionale Arrays

205

5.5 Anwendungen

208

5.5.1 Darstellung von Folgen

208

5.5.2 char-Arrays

210

5.5.3 Verarbeitung von Textdateien

215

5.6 Aufgaben zu Kapitel 5

218

5.7 Lösungen zu ausgewählten Aufgaben

223

6 Funktionen

236

6.1 Unterprogramme

237

6.2 Anwendung von Funktionen

238

6.2.1 Die parameterlose Funktion

238

6.2.2 Lokale Variablen in Funktionen

241

6.3 Parameter

243

6.3.1 Funktionen mit Parametern

243

6.3.2 Übergabe von Arrays

248

6.3.3 Rückgabeparameter

250

6.4 Programmentwicklung mit Funktionen

256

6.4.1 Prüfung des Rückgabewertes

256

6.4.2 Parameterprüfung in ANSI-C

259

6.4.3 Getrenntes Kompilieren

260

6.4.4 Speicherklassen

263

6.4.5 Deklarationen in Headerdateien

271

6.5 Rekursion

272

6.5.1 Was ist Rekursion?

272

6.5.2 Entwickeln rekursiver Programme

274

6.5.3 Zusammenfassung

280

6.6 Aufgaben zu Kapitel 6

281

6.7 Lösungen zu ausgewählten Aufgaben

288

7 Datenstrukturen

306

7.1 Nicht-elementare Datentypen

307

7.2 Strukturen

307

7.2.1 Definition und Verwendung

307

7.2.2 Zulässige Operatoren

311

7.2.3 Initialisierung

313

7.2.4 Alignment

314

7.2.5 Kompliziertere Strukturdefinitionen

315

7.3 Unions

319

7.3.1 Arbeitsweise

319

7.3.2 Anwendungen

320

7.4 Aufzählungstypen

323

7.4.1 Arbeitsweise

323

7.4.2 Anwendungen

326

7.5 Bitfelder

326

7.5.1 Arbeitsweise

326

7.5.2 Erweiterungen und Restriktionen

329

7.6 Selbstdefinierte Typen

330

7.6.1 Arbeitsweise

330

7.6.2 Anwendungen

332

7.7 Aufgaben zu Kapitel 7

333

7.8 Lösungen zu ausgewählten Aufgaben

335

8 Bildschirm-I/O

342

8.1 Das I/O-Konzept von C

342

8.2 Zeichenorientierte Ein-/Ausgabe

344

8.2.1 putchar

344

8.2.2 getchar

346

8.3 Formatierte Ein-/Ausgabe

349

8.3.1 printf

350

8.3.2 scanf

360

8.3.3 Ein-/Ausgabeumleitung

367

8.4 Aufgaben zu Kapitel 8

367

8.5 Lösungen zu ausgewählten Aufgaben

369

9 Datei-I/O

382

9.1 Standarddatei-I/O

383

9.1.1 Das C-Dateikonzept

383

9.1.2 Öffnen einer Datei

384

9.1.3 putc

389

9.1.4 getc

390

9.1.5 Schließen einer Datei

391

9.1.6 fprintf und fscanf

392

9.1.7 Die Standarddateien

393

9.2 Zusätzliche Funktionen zum Datei-I/O

395

9.2.1 fflush

395

9.2.2 rewind

396

9.2.3 fseek

396

9.2.4 ftell

397

9.3 Typisierte Dateie

398

9.3.1 Realisierung

398

9.3.2 fwrite

399

9.3.3 fread

401

9.4 Low-Level-Datei-I/O

403

9.4.1 open

403

9.4.2 creat

405

9.4.3 write

406

9.4.4 read

407

9.4.5 lseek

409

9.4.6 close

410

9.4.7 unlink

410

9.5 Lesen von Verzeichnissen

411

9.6 Zusammenfassung

416

9.7 Aufgaben zu Kapitel 9

416

9.8 Lösungen zu ausgewählten Aufgaben

417

10 Zeiger - erster Teil

428

10.1 Dynamische Datenstrukturen

429

10.1.1 Der statische Lösungsansatz

429

10.1.2 Die dynamische Lösung

430

10.1.3 Ausblick

431

10.2 Einführung des Zeigerbegriffs

432

10.2.1 Definition einer Zeigervariablen

432

10.2.2 Wertzuweisung

433

10.2.3 Dereferenzierung

434

10.2.4 Zuweisung zweier Zeiger

437

10.2.5 Dynamische Speicherzuweisung

440

10.2.6 Rückgabe von Speicher

445

10.3 Lineare Listen

448

10.3.1 Grundkonstruktion

448

10.3.2 Zugriff auf Elemente

449

10.3.3 Anhängen eines Satzes

450

10.3.4 Ausgeben der Liste

452

10.3.5 Löschen eines Satzes

453

10.3.6 Alphabetisches Einfügen

455

10.4 Weitere dynamische Datenstrukturen

456

10.4.1 Doppelt verkettete Listen

456

10.4.2 Bäume

457

10.4.3 Stacks

458

10.4.4 Queues

459

10.5 Aufgaben zu Kapitel 10

459

10.6 Lösungen zu ausgewählten Aufgaben

461

11 Zeiger - zweiter Teil

470

11.1 Zeiger und Arrays

471

11.1.1 Array gleich Zeiger?

471

11.1.2 Die Unterschiede zwischen beiden

472

11.1.3 Zeigerarithmetik

473

11.1.4 Dynamische Arrays

481

11.1.5 Die strcpy-Funktion

482

11.2 Simulation von Call-By-Reference

486

11.2.1 Definition von Referenzparametern

487

11.2.2 Aufrufen einer Funktion mit Referenzparametern

488

11.3 Zeiger auf Funktionen

489

11.3.1 Definition von Funktionszeigern

490

11.3.2 Zuweisung eines Funktionszeigers

492

11.3.3 Aufrufen eines Funktionszeigers

492

11.3.4 Übergabe als Parameter

494

11.4 Kommandozeilenparameter

497

11.4.1 Definition

497

11.4.2 Auswertung

498

11.5 Variable Parameterlisten

501

11.5.1 Definition

501

11.5.2 Implementierung

502

11.5.3 vprintf und vfprintf

504

11.6 Aufgaben zu Kapitel 11

506

11.7 Lösungen zu ausgewählten Aufgaben

510

12 Tipps und Tricks

520

12.1 Typische Fehlersituationen

521

12.1.1 Gleichheitsoperator

522

12.1.2 Semikolon am Ende

522

12.1.3 Semikolon in der Mitte

522

12.1.4 Semikolon hinter dem Makro

523

12.1.5 if-Anweisung

523

12.1.6 Logische Operatoren

524

12.1.7 break in der switch-Anweisung

524

12.1.8 for-Schleife

525

12.1.9 printf

525

12.1.10 Zeiger bei scanf

525

12.1.11 Dezimalkomma statt Dezimalpunkt

525

12.1.12 Backslash

526

12.1.13 Blockklammern

526

12.1.14 Deklaration vergessen

527

12.1.15 Operatorrangfolge

527

12.1.16 Nebeneffekte in logischen Ausdrücken

527

12.1.17 Überprüfung von Funktionsargumenten

528

12.1.18 Zeigerrückgabewerte

528

12.1.19 Klammerung in Makros

529

12.1.20 Nebeneffekte in Makros

530

12.1.21 Stacküberlauf

530

12.1.22 dangling-else

531

12.1.23 Ein wirkungsloses break

532

12.1.24 return-Anweisung vergessen

532

12.1.25 getchar

533

12.1.26 Tippfehler in Konstanten

534

12.1.27 Umfangreiche Makros

535

12.1.28 Array-Überlauf

536

12.1.29 Globale Variablen

537

12.1.30 Unresolved External

537

12.1.31 Rückgabewerte einiger Library-Funktionen

537

12.1.32 Fehlerhafte Sign-Extension

537

12.1.33 Alignment

538

12.1.34 Führende 0 bei Zahlenkonstanten

538

12.1.35 Textmodus bei Dateioperationen

538

12.1.36 Bindungskraft des Operators <<

539

12.1.37 sizeof auf Zeiger

539

12.1.38 free

540

12.1.39 Streams und Handles

541

12.1.40 Altmodische Zuweisungsoperatoren

541

12.1.41 do-Schleife

541

12.1.42 Parameterreihenfolge in fputc und fputs

542

12.1.43 Parameterreihenfolge bei fseek

542

12.1.44 strncpy verschluckt das Nullbyte

542

12.1.45 Kommentare

543

12.1.46 Einlesen von Strings mit scanf

543

12.1.47 Ganzzahlige Division

544

12.2 Aufgaben zu Kapitel 12

545

12.3 Lösungen zu ausgewählten Aufgaben

547

Teil II - Werkzeuge

560

13 Compiler und Linker

562

13.1 Was ist GNU?

562

13.2 Installation von GNU-C

563

13.2.1 Einleitung

563

13.2.2 Installation unter Windows 95

564

13.2.3 Installation auf anderen Betriebssystemen

565

13.2.4 Weiterführende Informationen

565

13.3 Übersetzen eines einfachen Programmes

567

13.4 Getrenntes Kompilieren und Linken

569

13.5 Arbeiten mit Libraries

570

13.5.1 Einbinden von Libraries

570

13.5.2 Erstellen einer eigenen Library

571

14 GNU-Emacs

574

14.1 Wahl des Editors

575

14.2 Installation von GNU-Emacs

577

14.3 Konzepte von Emacs

578

14.3.1 Aufruf

578

14.3.2 Bildschirmaufbau

578

14.3.3 Kommandos in Emacs

579

14.4 Grundlagen der Bedienung

581

14.4.1 Allgemeine Kommandos

581

14.4.2 Dateioperationen

581

14.4.3 Elementare Cursorbewegungen

582

14.4.4 Elementare Textmanipulationen

582

14.4.5 Puffer- und Fensterkommandos

583

14.4.6 Eingabehilfen

584

14.5 Spezielle Kommandos

584

14.5.1 Suchen und Ersetzen

584

14.5.2 Ausschneiden, Kopieren und Einfügen

586

14.5.3 Rechteckige Bereiche

586

14.5.4 Bookmarks

587

14.5.5 Tastaturmakros

587

14.5.6 Der Buffer-Modus

588

14.5.7 Der Dired-Modus

589

14.5.8 Weitere nützliche Funktionen

590

14.6 Der C-Modus

590

14.6.1 Major-Modes

590

14.6.2 Wichtige Tastaturkommandos

591

14.6.3 Compileraufruf

591

14.6.4 Tagging

592

14.6.5 Sonstige Eigenschaften des C-Modus

593

14.7 Benutzerspezifische Anpassungen

594

14.7.1 Emacs-LISP

594

14.7.2 Einfache Konfigurationen

594

14.8 Weiterführende Informationen

598

15 Debugging und Profiling

600

15.1 Debuggen mit gdb

601

15.1.1 Grundlagen

601

15.1.2 Ein fehlerhaftes Programm

602

15.1.3 Vorbereiten des Programmes zum Debuggen

607

15.2 Eine Beispielsitzung im Debugger

608

15.2.1 Breakpoints

608

15.2.2 Kommandos und Abkürzungen

609

15.2.3 Starten des Programmes

609

15.2.4 Einzelschrittbearbeitung

609

15.2.5 Variablen ansehen

610

15.2.6 Quelltext ausgeben

610

15.2.7 Beenden von gdb

611

15.2.8 Top-Down-Debugging

612

15.2.9 Löschen eines Breakpoints

613

15.2.10 Das until-Kommando

614

15.2.11 Die fehlerfreie Programmversion

615

15.3 Kommandozusammenfassung

618

15.4 Weitere Werkzeuge zur Programmanalyse

619

15.4.1 gprof

619

15.4.2 lint

620

15.4.3 Sonstige Hilfsmittel

622

16 Projektverwaltung

624

16.1 make

624

16.1.1 Abhängigkeitsregeln

625

16.1.2 Interpretation des makefile

627

16.1.3 Kommentare

628

16.1.4 Implizite Regeln

628

16.1.5 Makros

629

16.1.6 Kommandozeilenschalter

629

16.2 touch

630

16.3 grep

631

16.3.1 Mustersuche

631

16.3.2 Reguläre Ausdrücke

632

17 Versionskontrolle mit RCS

634

17.1 Grundlagen und Konzepte

635

17.1.1 Einführung

635

17.1.2 Konzepte von Quelltextmanagementsystemen

636

17.2 Grundlegende Operationen

637

17.2.1 Vorbereitungen

637

17.2.2 Einchecken einer Datei

639

17.2.3 Auschecken einer Datei

640

17.2.4 Zurücknehmen von Änderungen

642

17.2.5 Status- und Loginformationen

642

17.3 Versionen verwalten

644

17.3.1 Versionsunterschiede

644

17.3.2 Versionsnummern manuell vergeben

645

17.3.3 Versionszweige erstellen

646

17.3.4 Versionen mischen

647

17.3.5 Symbolische Versionsnamen

649

17.3.6 Das Programm rcs

650

17.4 Keyword-Expansion

650

17.5 RCS und GNU-Emacs

653

17.6 Weiterführende Informationen

655

Teil III - Referenz

656

18 Die Standard-Library

658

18.1 Einleitung

658

18.1.1 Aufbau der Referenzeinträge

659

18.2 Übersicht nach Themengebieten

660

18.2.1 Bildschirmein-/-ausgabe

660

18.2.2 Datei- und Verzeichnisfunktionen

660

18.2.3 Zeichenkettenoperationen

662

18.2.4 Speicherverwaltung

663

18.2.5 Arithmetik

663

18.2.6 Systemfunktionen

664

18.3 Alphabetische Referenz

665

A

665

B

675

C

677

D

682

E

683

F

684

G

707

H

710

I

711

L

713

M

719

O

728

P

730

Q

736

R

738

S

746

T

776

U

782

V

783

Anhang

786

A Syntax

786

A.1 EBNF

786

A.2 Produktionen

786

A.3 Terminalzeichen

786

A.4 Nichtterminalsymbole

787

A.5 Metazeichen

787

A.6 Die Syntax von C

788

B Operator-Reihenfolge

794

C Literaturhinweise

798

D Zeichensatztabellen

802

D.1 Windows-Zeichensatz (Codepage 1252)

802

D.2 PC8-Zeichensatz (Codepage 437)

803

Stichwortverzeichnis

804

Symbols

804

A

804

B

805

C

806

D

806

E

807

F

807

G

808

H

809

I

809

K

809

L

810

M

810

N

811

O

811

P

811

Q

812

R

812

S

812

T

814

U

814

V

815

W

815

X

815

Y

815

Z

816