మాడ్యూల్ పాఠాలు (2/2)
విలువ మరియు సూచన ద్వారా పాస్ చేయండి
C++లో, మీరు ఒక ఫంక్షన్కి ఆర్గ్యుమెంట్ని పంపినప్పుడు, దీన్ని చేయడానికి రెండు ప్రధాన మార్గాలు ఉన్నాయి: విలువ ద్వారా లేదా సూచన ద్వారా.
ఈ వ్యత్యాసాన్ని అర్థం చేసుకోవడం ప్రోగ్రామ్ ఖచ్చితత్వం మరియు పనితీరు ఆప్టిమైజేషన్ రెండింటికీ కీలకం.
విలువ ద్వారా పాస్ (కాపీ)
డిఫాల్ట్గా, C++ విలువ ద్వారా ఆర్గ్యుమెంట్లను పాస్ చేస్తుంది. దీని అర్థం మెమరీలో డేటా యొక్క కాపీ సృష్టించబడింది. ఫంక్షన్ లోపల చేసిన ఏదైనా సవరణ బయట ఉన్న అసలు వేరియబుల్ను ప్రభావితం చేయదు:
#include <iostream>
void increment(int n) {
n++; // Modifies only the local copy
}
int main() {
int x = 5;
increment(x);
std::cout << x << std::endl; // Prints 5, x remains unchanged!
return 0;
}సూచన ద్వారా పాస్ (&)
మీరు ఫంక్షన్ అసలైన వేరియబుల్ను సవరించగలగాలని కోరుకుంటే లేదా మీరు పెద్ద వస్తువులను (పొడవైన స్ట్రింగ్లు లేదా వెక్టర్లు వంటివి) కాపీ చేయడాన్ని నివారించాలనుకుంటే, మీరు తప్పనిసరిగా పాస్ బై రిఫరెన్స్ని ఉపయోగించాలి.
పరామితి రకం తర్వాత & చిహ్నాన్ని జోడించడం ద్వారా సూచన ప్రకటించబడుతుంది:
#include <iostream>
void incrementRef(int& n) {
n++; // Modifies the original variable directly
}
int main() {
int x = 5;
incrementRef(x);
std::cout << x << std::endl; // Prints 6!
return 0;
}int& n పరామితి ఒక కాపీ కాదు, కానీ ఫంక్షన్కి కాల్ చేస్తున్నప్పుడు x వేరియబుల్కి అలియాస్ (ప్రత్యక్ష సూచన).
మీరే ప్రయత్నించండి
పూర్ణాంకం n (int&n ఉపయోగించి)కి సూచనను తీసుకొని దాని విలువను (n = n * 2) రెట్టింపు చేసే శూన్యమైన రిటర్న్ రకంతో doubleNumber అనే ఫంక్షన్ని నిర్వచించండి. 10కి ప్రారంభించబడిన వేరియబుల్ వాల్ను మెయిన్ పాస్లో కాల్ చేసి, ఆపై వాల్ని ప్రింట్ చేయండి.
సూచనను చూపించు
ఫంక్షన్ సిగ్నేచర్ సూచనను సూచించడానికి రకం తర్వాత `&`అక్షరాన్ని ఉపయోగిస్తుంది:`శూన్యం డబుల్ నంబర్(int&n)`.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
a మరియు b (int& a, int& b) అనే రెండు పూర్ణాంకాల సూచనలను తీసుకుని, తాత్కాలిక వేరియబుల్ టెంప్ని ఉపయోగించి వాటి విలువలను మార్చుకునే swap అనే ఫంక్షన్ను నిర్వచించండి. x మరియు y లను స్వాప్ చేయడానికి ప్రధానంగా కాల్ చేసి, ఆపై వాటిని ప్రింట్ చేయండి.
సూచనను చూపించు
`int temp = aని ఉపయోగించండి; a = b; b = temp;` విలువలను మార్చుకోవడానికి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది