Funktionen Flashcards

1
Q

Funktionen - Definition

A
[Speicherklasse] Rückgabetyp Funktionsbezeichner(Parameter) {
        Anweisungen
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was ist der Rückgabetyp einer Funktion

A

Hier wird der Rückgabewert der Funktion festgelegt. Wenn die Funktion keinen Rückgabewert haben soll ist der Rückgabetyp void

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

Was ist der Funktionsbezeichner einer Funktion?

A

Der Bezeichner der Funktion, mit der die Funktion aufgerufen werden kann.

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

Welche Regeln gelten für die Funktionsbezeichner?

A
  • Die gleichen wie für Bezeichner
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was sind Parameter einer Funktion?

A
  • Parameter einer Funktion sind optional
  • Sie werden durch einen Datentyp und dann Namen spezifiziert
  • Sie werden durch ein Komma getrennt
  • Wenn keine Paramter verwendet werden, können die Klammern frei gelassen werden oder void zwischen sie schreiben
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was sind Anweisungsblocke in der Funktion?

A

In ihm werden die Anweisungen ausgeführt.

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

Funktionsaufruf - Definition

A
Funktionsbezeichner(Parameter);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was gilt für die Position einer Funktiondefinition im Quelltext

A

Sie muss vor ihrem ersten Aufruf im Quelltext deklariert sein.

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

Wie kann man umgehen, dass die Funktion vor ihrem Aufruf definiert werden muss.

A

Mit einer Vorwärtsdeklaration

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

Was macht eine Vorwärtsdeklaration und wie sieht sie aus?

A
[Spezifizierer] Rückgabetyp Funktionsbezeichner(Parameter);

Hier wird noch nicht definiert was die Funktion macht, sondern es wird nur gesagt das es eine Funktion mit diesem Bezeichner und diesen Parametern gibt, damit der Compiler die Funktion kennt und sie nach ihrem ersten Aufruf Definiert werden kann oder erst Zeitlich später.

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

Was ist eine lokale Variable?

A

Diese Variable existert nur in ihren Anweisungsblock. Sie ist also von außerhalb nicht sichtbar und wird nach verlassen des Anweisungsblocks zerstört.

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

Was gilt für die Variablen und Parameter innerhalb einer Funktion in hinsicht auf Sichtbarkeit und Gültigkeitsbereich?

A

Sie sind lokale Variablen

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

Kann man eine lokale Variable mit gleichem Bezeichner wie eine weniger lokale Variable definieren?

A

Ja

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

Auf welche Variable wird zugegriffen, wenn es zwei Variablen mit gleichem Bezeichner gibt?

A

Auf die lokalere

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

Kann man eine Variablen mit gleichen Bezeichner bei gleicher lokalität nochmal definieren/deklarieren?

A

Nein

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

Was sind globale Variablen

A

Das sind Variablen die außerhalb von einer Funktion/Anweisungsblock definiert wurde. Sie heißen global weil sie von jeder Stelle Im Quelltext nach ihrer Deklaration aus erreichbar sind.

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

Was sind statische Variablen

A

Diese Variablen behalten ihren Wert, auch nach verlassen ihres Gültigkeitsbereiches, so das wenn dieser Gültigkeitsbereich erneut betreten wird sie immer noch ihren alten Wert gespeichert haben.

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

Was gilt für die deklaration von statischen Variablen?

A

Ihnen sollte direkt bei ihrer Deklaration ein Wert zugewiesen werden, das ist aber in der Theorie nicht verboten.

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

Wo werden statische Variablen im gegensatz zu anderen lokalen Variablen gespeichert?

A

Im Datensegment und nicht im Stacksegment.

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

Welche Speicherklassen/Typ-Qualifizierer gibt es für Variablen?

A
  • auto
  • extern
  • register
  • static
  • volatile
  • const
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Was macht das Schlüsselwort auto bei einer Variable?

A

Die Variable wird automatisch angelegt und entfernt. Also genau wie bei lokalen Variablen. Daher ist das Schlüsselwort überflüssig.

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

Was macht das Schlüsselwort extern bei einer Variable

A

Wenn sich die Varialbe in einer anderen Datei befindet wird das Schlüsselwort extern vor sie gesetzt um dies zu Kennzeichnen. Die Variable ist dann in gesammten Programm benutzbar, wie eine globale Variable.

22
Q

Was macht das Schlüsselwort register bei einer Variable

A

Gibt an, dass die Variable so lange wie möglich im Register gehalten werden soll. Hat heutzutage wegen der hohen optimierung der Compiler aber keine Wirkung mehr.

23
Q

Was macht das Schlüsselwort static be einer Variable

A

Das macht die Variable zu einer statischen Variable

24
Q

Was macht das Schlüsselwort volatile bei einer Variable

A

Gibt an das die Variable jedes mal neu aus dem Hauptspeicher geladen werden soll und direkt dort wieder abgespeichert werden soll.

25
Q

Was macht das Schlüsselwort const bei einer Variable

A

Es wird eine Konstatante Definiert. Dies ist eine Variable der nur bei ihrer Deklaration ein Wert zugewiesen werden kann und dieser danach nicht mehr geändert werden kann.

26
Q

Welche Speicherklassen gibt es für Funktionen?

A
  • extern
  • static
  • volatile
27
Q

Was macht das Schlüsselwort extern bei Funktionen

A

Es gibt an, dass diese Funktion auch in anderen Datein verwendet werden kann.

28
Q

Wenn keine Speicherklasse bei einer Funktion angegeben ist. Welche hat sie dann.

A

extern

29
Q

Was macht das Schlüsselwort volatile bei einer Funktion

A

Verhindert das die Funktion optimiert wird und das jedes mal die Funktion neu aus dem Hauptspeicher gelesen werden muss.

29
Q

Was macht das Schlüsselwort static bei einer Funktion

A

Gibt an dass diese Funktion nur in der eigenen Datei verwendet werden kann.

30
Q

Wie können Parameter an eine Funktion übergeben werden?

A
  • Call by Value
  • Call by Reference
31
Q

Was heißt es wenn ein Parameter mit Call by Value übergeben wird?

A

Der Wert der Variable wird an die Funktion übergeben

32
Q

Was heißt es wenn ein Paramter mit Call by Reference übergeben wird?

A

Die Speicheradresse der Variable, aber nicht der Wert der Variable wird übergeben.

33
Q

Was muss ich bei der Definition der Funktion machen, damit meine Funktion einen Rückgabewert hat?

A

Ein Rückgabetyp angeben.

34
Q

Was gilt für den Typ des Rückgabewerts?

A

Er muss dem Rückgabetyp entsprechen.

35
Q

Welche Variablentypen kann ich für den Rückgabetyp verwenden?

A

Alle

36
Q

Mit welchem Schlüsselwort beende ich die Funktion und gebe das nachfolgende zurück?

A
return <Variable>;
37
Q

Welche Funktion wird beim starten des Programms zuerst aufgerufen?

A

Die main-Funktion

38
Q

Welche Definition sind für die main-Funktion erlaubt?

A
int main () {
        return 0;
}
int main (int agrc, char* argv[]) {
        return 0;
}
39
Q

Welche Funktion muss immer in einem ausführbaren Programm enthalten sein?

A

Die main-Funktion

40
Q

In welchen Fällen liegt ein undefiniertes Verhalten beim Beenden der main()-Funktion vor?

A
  • kein Rückgabewert bei Verwendung von void main()
  • Verwendung von _exit(); im Programm. Wichtig: _exit() != exit()
41
Q

Wie wird ein Programm gestartet und beendet?

A
42
Q

Welchen Wert muss man in der main-Funktion zurückgeben, damit das Programm als erfolgreich beendet gilt?

A

Hängt vom Betriebssystem ab, meist 0.

43
Q

Wie kann man den richtigen Wert für eine erfolgreich beendete main-Funktion und den Wert für eine nicht erfolgreich beendete main-Funktion angeben, so dass es auf verschiedenen Betriebssytem läuft?

A

In der headerdatei stdlib.h sind die Makros EXIT_SUCCESS und EXIT_FAILURE definiert, die die richtigen Werte beinhalten.

44
Q

Was ist eine Rekursive Funktion?

A

Eine Funktion die sich selbst aufruft

45
Q

was sind inline-Funktionen?

A

Die Funktion wird an ihrer Aufrufstelle eingefüfgt, als wäre der Code dort geschrieben worden und nicht in einer Funktion.

46
Q

Was ist der Vorteil von inline-Funktionen?

A

Man spart sich den Sprung zur Funktion und die Speicherung der Rücksprungadresse usw.. Durch heutige Optimierungen sind inline-Funktionen aber inzwischen eigentlich nicht mehr schneller als normale Funktionen.

47
Q

Warum sollte man inline-Funktionen nicht zu groß machen?

A

Der Compiler würde die Funktion wenn sie zu groß ist einfach als normale Funktion behandeln, da das inline nicht pflicht ist.

48
Q

wie kann ich inline-Funktionen definiere?

A

so wie normale Funktionen mit dem Schlüsselwort inline schwichen dem Spezifizierer und den Rückgabetyp.

49
Q

Welchen Spezifierer muss eine inline-Funktion haben wenn sie in der gleichen Datei Definiert ist, in der sie auch verwendet wird?

A

static

50
Q

Wie kann man das static problem von inline-Funktionen umgehen?

A

Die inline-Funktionen werden in einer externen Headerdatei ohne inline mit dem Schlüsselwort extern deklariert. In der normalen Datei können diese dann ohne static geschrieben werden.

51
Q

Mit welcher Funktion/Anweisung kann ich ein Programm direkt beenden?

A
exit();