Code zur Sitzung Funktionen und Zeiger
Funktionen und Zeiger
#include <iostream>
using namespace std;
// Funktionsdeklaration
// ToDo: Erstelle eine Funktion, die einen Eingabewert quadriert und auf der Konsole ausgibt
void printQuadrat(int eingabeZahl);
// Call by value: Wert wird übergeben und kopiert, um in der Funktion verwendet zu werden
int returnQuadrat(int eingabeZahl);
int main() {
int zahl;
cout << "Bitte geben Sie eine Zahl ein, die quadriert werden soll: ";
cin >> zahl;
// Funktionsaufruf
printQuadrat(zahl);
cout << endl << "returnQuadrat: " << returnQuadrat(zahl);
return 0;
}
// Funktionsdefinition
// Rückgabewert Funktionsname (Funktionsparameter) { Funktionsrumpf }
void printQuadrat(int eingabeZahl) {
// Funktionsrumpf
// Gültigkeitsbereich der Variable:
int ergebnis = eingabeZahl * eingabeZahl;
cout << ergebnis;
}
int returnQuadrat(int eingabeZahl) {
return eingabeZahl * eingabeZahl;
}
Eine Swap-Funktion
#include <iostream>
using namespace std;
// ********************************
// Deklaration
// ********************************
void swapNumbers(int *schmitz, int *backes); // keine Rueckgabe, 2 uebergeb. int-Zeiger
// ********************************
// Hauptfunktion
// ********************************
int main() {
int x = 0, y = 15; // Variablen x und y deklarieren und definieren
cout << "vorher: " // optional: x und y ausgeben
<< x
<< " "
<< y
<< endl;
cout << "Adresse von x im Arbeitsspeicher: " << &x;
cout << endl;
cout << "Zeiger auf die Adresse von x im Arbeitsspeicher: " << *&x;
cout << endl;
// Adressen von x und y an swap uebergeben
swapNumbers(&x, &y);
cout << "nachher: "
<< x
<< " "
<< y
<< endl;
return 0;
}
// ********************************
// Definition
// ********************************
// swap erwartet Zeiger auf int
// Call by reference
void swapNumbers(int *schmitz, int *backes) {
// eine tmp-Variable deklarieren
int temp;
// uebergebene Variablen (eigentlich: deref.Zeiger) mit Hilfe von temp tauschen
temp = *schmitz;
cout << "Temp hat den Wert: " << temp << endl;
*schmitz = *backes;
*backes = temp;
}