#26 Variablen in Funktionen Flashcards
Wie funktionier immer der Übergabemechanismus in C bei Funktionen?
Übergabemechanismus in C ist immer call by value:
- Beim Funktionsaufruf werden Speicherplätze entsprechend
der Definition der formalen Parameter reserviert.
- Die Kopien der aktuellen Parameter werden zu lokalen
Variablen.
- Folge: Alles, was von nun an in der Funktion passiert, hat
keine Auswirkung auf die Variablen im aufrufenden
Programmteil.
Welche Möglichkeiten hat man Werte aus einer Funktion zurückzugeben?
- Rückgabewert (return)
- call by reference
Was bedeutet Call by Reference, wie funktionier es ?
-Call by reference bedeutet:
- Funktion erhält Verweise auf Variablen (in C: Zeiger).
- Operationen in der Funktion arbeiten auf den Originaldaten.
- Heißt: Eine Funktion kann die originalen Variablen der
aktuellen Parameter ändern.
- Call by reference wird in C mit Hilfe von Zeigern nachgebildet:
- Funktion erhält Adressen der Daten als Zeiger.
- Durch Dereferenzierung der Zeiger (Inhaltsoperator *) kann
eine Funktion den Inhalt von Parametern ändern.
Bsp:
void inc_by_value(int i)
{
i++;
}
void inc_by_ref(int i)
{
(i)++;
}
int main()
{
int i = 0;
inc_by_value(i);
printf(“by value: %d\n”, i);
inc_by_ref(&i);
printf(“cbr: %d\n”, i);
return 0;
}
Was sind Statische Variablen in Funktionen? Nenne die wichtigsten Punkte.
include <stdio.h></stdio.h>
Lebensdauer: während des gesamten Programms
- Anders formuliert: Statische Variablen in Funktionen „überleben“ das Ende der Funktion.
- Initialisierung: einmalig
- Sichtbarkeit: nur innerhalb der Funktion
- Anwendungsbereich: Wert soll zwischen Funktionsaufrufen erhalten bleiben,
aber zur Vermeidung von Namenskonflikten sowie zur Zugriffssicherung soll
keine globale Variable erzeugt werden.
- Schlüsselwort static
Beispiel:
Mehrfaches Aufrufen der folgenden Funktion:
int getId() {
static int counter = 0;
return counter++;
}
int main() {
printf(“%d\n”, getId());
printf(“%d\n”, getId());
printf(“%d\n”, getId());
}