Argumenttien Välittäminen Arvona/Osoittimena/Viittauksena
Pyyhkäise näyttääksesi valikon
Arvon mukaan välittäminen
Funktiossa luodut muuttujat ovat käytettävissä vain kyseisessä funktiossa. Tämä sääntö pätee myös argumenttien välittämiseen. Funktion määrittelyn parametreilla on paikallinen näkyvyys ja ne välitetään arvon mukaan, mikä tarkoittaa, että niiden arvot kopioidaan funktioon ja tallennetaan erillisiin muuttujiin (kuten kirjastokirjan lainaaminen alkuperäisen sijaan).
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; }
Osoittimen kautta välittäminen
Argumenttien välittäminen arvon mukaan ei ole aina tehokasta. Arvojen kopiointi vie ylimääräistä muistia, ja joskus funktion täytyy muokata alkuperäistä muuttujaa suoraan. Tällaisissa tapauksissa on parempi välittää muuttuja osoittimen kautta, eli lähettää sen muistiosoite arvon sijaan. Tämä tehdään käyttämällä osoitinoperaattoria (*) funktion parametreissa.
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; }
Viittausvälitys
Viittauksella välittäminen tarkoittaa, että funktiolle annetaan suora pääsy muuttujan muistiin, jolloin se voi muuttaa alkuperäistä arvoa ilman viittausoperaattoria (*).
Viittauksella välittäminen käyttää &-operaattoria funktion parametreissa. Se toimii samankaltaisesti kuin osoittimen kautta välittäminen, mutta kahdella keskeisellä erolla:
- Et tarvitse
*-operaattoria käyttääksesi muuttujaa funktion sisällä. - Et tarvitse
&-operaattoria funktiota kutsuttaessa, vain sen määrittelyssä.
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; }
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme