Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Übergeben von Argumenten als Wert/Zeiger/Referenz | Spezifikation von Funktionsargumenten
C++-Funktionen

Übergeben von Argumenten als Wert/Zeiger/Referenz

Swipe um das Menü anzuzeigen

Übergabe durch Wert

Variablen, die innerhalb einer Funktion erstellt werden, sind nur innerhalb dieser Funktion zugänglich. Diese Regel gilt auch beim Übergeben von Argumenten. Parameter in der Funktionssignatur haben lokalen Geltungsbereich und werden durch Wert übergeben, was bedeutet, dass ihre Werte in die Funktion kopiert und in separaten Variablen gespeichert werden (vergleichbar mit dem Ausleihen eines Bibliotheksbuchs anstelle des Originals).

main.cpp

main.cpp

1234567891011121314151617181920
#include <iostream> // Function that takes an argument by value void modify(int num) { // Modify the parameter (local copy of the argument) num = num * 2; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass 'number' by value modify(number); // Varibale in the main function remains unchanged std::cout << "After function call: " << number << std::endl; }

Übergabe durch Zeiger

Das Übergeben von Argumenten durch Wert ist nicht immer effizient. Das Kopieren von Werten benötigt zusätzlichen Speicher, und manchmal muss eine Funktion die ursprüngliche Variable direkt verändern. In solchen Fällen ist es besser, die Variable durch Zeiger zu übergeben, was bedeutet, dass ihre Speicheradresse anstelle ihres Wertes übergeben wird. Dies geschieht mit dem Zeigeroperator (*) in den Funktionsparametern.

main.cpp

main.cpp

1234567891011121314151617181920212223
#include <iostream> // Function that takes an argument using pointer void modify(int* p_num) { // Modify the value at the memory address pointed by `p_num` // '*' is used to extract the value from the address (pointer) *p_num = (*p_num) * 2; std::cout << "Inside function: " << *p_num << std::endl; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass the address of 'number' using a pointer // '&' is used to get an address of the variable modify(&number); // 'number' in the main function is modified through the pointer std::cout << "After function call: " << number << std::endl; }

Übergabe durch Referenz

Übergabe durch Referenz bedeutet, einer Funktion direkten Zugriff auf den Speicher einer Variablen zu geben, sodass sie den ursprünglichen Wert ohne Verwendung des Dereferenzierungsoperators (*) ändern kann.

Die Übergabe durch Referenz verwendet den &-Operator in den Funktionsparametern. Sie funktioniert ähnlich wie die Übergabe durch Zeiger, jedoch mit zwei wichtigen Unterschieden:

  • Es ist nicht notwendig, * zu verwenden, um innerhalb der Funktion auf die Variable zuzugreifen.
  • Es ist nicht notwendig, & beim Aufruf der Funktion zu verwenden, sondern nur in deren Deklaration.
main.cpp

main.cpp

1234567891011121314151617181920
#include <iostream> // Function that takes an argument by reference void modify(int& num) { // Modify the parameter directly (no need for dereferencing) num = num * 2; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass `number` by reference modify(number); // `number` in the main function is modified directly through the reference std::cout << "After function call: " << number << std::endl; }
question mark

Welche Aussage beschreibt am besten den Unterschied zwischen Übergabe per Wert, Zeiger und Referenz?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 2. Kapitel 2
some-alt