#26 Variablen in Funktionen Flashcards

1
Q

Wie funktionier immer der Übergabemechanismus in C bei Funktionen?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Welche Möglichkeiten hat man Werte aus einer Funktion zurückzugeben?

A
  1. Rückgabewert (return)
  2. call by reference
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was bedeutet Call by Reference, wie funktionier es ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was sind Statische Variablen in Funktionen? Nenne die wichtigsten Punkte.

A

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());
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly