Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch für Linux, Unix und Windows
– 2., aktualisierte und erweiterte Auflage 2006
Buch: C von A bis Z

C von A bis Z
1.116 S., mit CD, Referenzkarte, 39,90 Euro
Galileo Computing
ISBN 3-89842-643-2
gp Kapitel 11 Funktionen
  gp 11.1 Was sind Funktionen?
  gp 11.2 Wozu Funktionen?
  gp 11.3 Definition von Funktionen
  gp 11.4 Funktionsaufruf
  gp 11.5 Funktionsdeklaration
  gp 11.6 Lokale Variablen
  gp 11.7 Globale Variablen
  gp 11.8 Statische Variablen
  gp 11.9 Schlüsselworte für Variablen – Speicherklassen
    gp 11.9.1 auto
    gp 11.9.2 extern
    gp 11.9.3 register
    gp 11.9.4 static
  gp 11.10 Typ-Qualifizierer
    gp 11.10.1 volatile
    gp 11.10.2 const
  gp 11.11 Geltungsbereich von Variablen
  gp 11.12 Speicherklassen-Spezifizierer für Funktionen
    gp 11.12.1 extern
    gp 11.12.2 static
    gp 11.12.3 volatile
  gp 11.13 Datenaustausch zwischen Funktionen
  gp 11.14 Wertübergabe an Funktionen (call-by-value)
  gp 11.15 Rückgabewert von Funktionen
  gp 11.16 Die Hauptfunktion main()
  gp 11.17 Rückgabewert beim Beenden eines Programms
  gp 11.18 Funktionen der Laufzeitbibliothek
  gp 11.19 Getrenntes Compilieren von Quelldateien
  gp 11.20 Rekursive Funktionen
    gp 11.20.1 Exkurs: Stack
    gp 11.20.2 Rekursionen und der Stack
    gp 11.20.3 Fakultät
    gp 11.20.4 Fibonacci-Zahlen
    gp 11.20.5 Größter gemeinsamer Teiler (GGT)


Galileo Computing - Zum Seitenanfang

11.13 Datenaustausch zwischen Funktionen  toptop

Für den Austausch von Daten kennen Sie bisher nur die Möglichkeit, globale Variablen zu verwenden. Eine globale Variable ist jeweils eine gemeinsame Variable für alle Funktionen:

/* func8.c */
#include <stdio.h>
static int zahl;
void verdoppeln(void);
void halbieren(void);
void verdoppeln(void) {
   zahl *= 2;
   printf("Verdoppelt: %d\n", zahl);
}
void halbieren(void) {
   zahl /= 2;
   printf("Halbiert: %d\n", zahl);
}
int main(void) {
   int wahl;
   printf("Bitte geben Sie eine Zahl ein: ");
   scanf("%d",&zahl);
   printf("Wollen Sie diese Zahl\n");
   printf("\t1.)verdoppeln\n\t2.)halbieren\n\nIhre Wahl: ");
   scanf("%d",&wahl);
   switch(wahl) {
      case 1  : verdoppeln();
                break;
      case 2  : halbieren();
                break;
      default : printf("Unbekannte Eingabe\n");
   }
   return 0;
}

Dieses Programm weist keinerlei Fehler auf. Nur wirkt es etwas störend, dass eine globale Variable für alle Funktionen verwendet wurde. Zum einen wissen Sie, dass es besser wäre, die Variable lokal zu halten. Zum anderen kann das Programm auf diese Art schnell unübersichtlich werden. Als Beispiel ein Programm, welches sich über mehrere Dateien verteilt, bei dem Sie auf folgende Funktion stoßen:

void berechnung(void) {
   V = l * b * h / 4;
   x = V * V;
}

Es erscheint alles eindeutig, nicht wahr? Natürlich nicht, denn es lässt sich anhand dieser Berechnung überhaupt nicht erkennen, um welchen Datentyp es sich handelt. Um also den Datentyp zu ermitteln, müssen Sie nach seiner Deklaration suchen.

Einfach ausgedrückt heißt das, dass Sie eine Funktion so programmieren müssen, dass diese auch für eine allgemeine Verwendung ausgelegt ist. Dafür gibt es in der Regel zwei Möglichkeiten, welche Sie am besten auch beide nutzen.

gp  Funktionen mit Wertübergabe (Parameter)
gp  Funktionen mit Wertrückgabe

Mit der Wertübergabe durch Parameter übergeben Sie einer Funktion Daten (Datenfluss in die Funktion hinein), und mit der Wertrückgabe geben Sie Daten aus einer Funktion heraus (Datenfluss aus der Funktion heraus). Die Funktion arbeitet somit als eine Art Schnittstelle.

 << zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z
C von A bis Z
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-Programmierung


Zum Katalog: C/C++






 C/C++


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Reguläre Ausdrücke






 Reguläre Ausdrücke


Zum Katalog: Linux






 Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de