Ü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
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
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
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; }
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen