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.6 Lokale Variablen  toptop

Die lokalste Variable ist immer die Variable im Anweisungsblock. Sehen Sie sich kurz ein Beispiel an:

/* lokal_var1.c */
#include <stdio.h>
int main(void) {
   int i = 333;
   if(i == 333) {
     int i = 111;
     printf("%d\n",i);  /* 111 */
   }
   printf("%d\n",i);    /* 333 */
   return 0;
}

Zunächst übergeben Sie am Anfang des Programms der Variablen i den Wert 333. In der if-Bedingung wird der Wert auf 333 überprüft. Anschließend wird erneut eine Variable i erstellt, der Sie jetzt den Wert 111 übergeben. Die Ausgabe im Anweisungsblock von if ist somit 111. Die Ausgabe außerhalb des Anweisungsblocks if ist aber wieder 333.

Aber ganz so einfach will ich es Ihnen nicht machen. Schreiben Sie das Programm nochmals neu:

/* lokal_var2.c */
#include <stdio.h>
int main(void) {
   int i = 333;
   if(i == 333) {
      i = 111;
      printf("%d\n",i);  /* 111 */
   }
   printf("%d\n",i);     /* 111 */
   return 0;
}

Sie haben hier im Gegensatz zum vorherigen Beispiel den Wert der Variablen i im if-Anweisungsblock auf 111 verändert, aber keine neue lokale Variable i definiert.


Merke   Für lokale Variablen gilt Folgendes: Bei gleichnamigen Variablen ist immer die lokalste Variable gültig, also die, die dem Anweisungsblock am nächsten steht.


Hier nochmals ein Beispiel, das aber keine Schule machen sollte:

/* lokal_var3.c */
#include <stdio.h>
int main(void) {
   int i=333;
   if(i == 333) {
      int i = 666;
      {
         i = 111;
         printf("%d\n",i);   /* 111 */
      }
      printf("%d\n",i);      /* 111 */
   }
   printf("%d\n",i);         /* 333 */
   return 0;
}

Lokale Variablen, die in einem Anweisungsblock definiert wurden, sind außerhalb dieses Anweisungsblocks nicht gültig.

Funktionen sind im Prinzip nichts anderes als Anweisungsblöcke. Sehen Sie sich folgendes Beispiel an:

/* func4.c */
#include <stdio.h>
void aendern(void) {
   int i = 111;
   printf("In der Funktion aendern: %d\n",i);
}
int main(void) {
   int i=333;
   printf("%d\n",i);
   aendern();
   printf("%d\n",i);
   return 0;
}

Hier gilt dasselbe wie schon im vorherigen Beispiel. Die neu definierte Variable i in der Funktion aendern() hat keinen Einfluss auf die gleichnamige Variable i in der main()-Funktion. Bringen Sie zum Beispiel die Funktion in die folgende Form:

void aendern(void) {
   i = 111;
   printf("In der Funktion aendern: %d\n",i);
}

In diesem Fall würde sich das Programm nicht übersetzen lassen, da die Variable i noch nicht deklariert wurde. In einer Funktion müssen Sie eine Variable vor ihrer Verwendung zuerst deklarieren. Aber es gibt eine Möglichkeit, dem Compiler mitzuteilen, dass eine Variable für alle Funktionen gültig ist.

 << 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