మాడ్యూల్ పాఠాలు (2/2)
పాయింటర్లు
పాయింటర్లు C++ యొక్క అత్యంత శక్తివంతమైన మరియు విలక్షణమైన లక్షణాలలో ఒకటి. కంప్యూటర్ యొక్క భౌతిక మెమరీని నేరుగా యాక్సెస్ చేయడానికి అవి మిమ్మల్ని అనుమతిస్తాయి, సమర్థవంతమైన వనరుల నిర్వహణ మరియు అధిక పనితీరును ప్రారంభిస్తాయి.
1. మెమరీ మరియు చిరునామా అంటే ఏమిటి?
మీ ప్రోగ్రామ్లో మీరు ప్రకటించే ప్రతి వేరియబుల్ RAM మెమరీలోని సెల్లో నిల్వ చేయబడుతుంది. ప్రతి సెల్కు ప్రత్యేకమైన మెమరీ చిరునామా ఉంటుంది (సాధారణంగా హెక్సాడెసిమల్ ఆకృతిలో వ్యక్తీకరించబడింది, ఉదా. 0x7ffee3bf87ac).
C++ మాకు అడ్రస్ ఆఫ్ ఆపరేటర్ & ఉపయోగించి ఏదైనా వేరియబుల్ మెమరీ చిరునామాను పొందడానికి అనుమతిస్తుంది:
int x = 42;
std::cout << &x; // Prints the memory address of x (e.g., 0x7ffee3bf87ac)2. పాయింటర్ యొక్క నిర్వచనం
పాయింటర్ అనేది ఒక ప్రత్యేక వేరియబుల్, ఇది మరొక వేరియబుల్ యొక్క మెమరీ చిరునామాను దాని విలువగా నిల్వ చేస్తుంది.
సింటాక్స్కు డేటా రకం తర్వాత * నక్షత్రం ఉపయోగించడం అవసరం:
int x = 42;
int* ptr = &x; // ptr is a pointer to an integer that contains the address of x3. డెరిఫరెన్స్ ఆపరేటర్ (*)
పాయింటర్ సూచించే చిరునామాలో నిల్వ చేయబడిన విలువను యాక్సెస్ చేయడానికి లేదా సవరించడానికి, మేము * గుర్తు ద్వారా సూచించబడే డెరిఫరెన్స్ ఆపరేటర్ (లేదా పరోక్ష ఆపరేటర్)ని ఉపయోగిస్తాము:
int x = 42;
int* ptr = &x;
std::cout << *ptr; // Prints 42 (the value ptr points to)
*ptr = 100; // Modifies the value of x through the pointer
std::cout << x; // Now prints 100!4. శూన్య పాయింటర్లు: nullptr
ఏ చెల్లుబాటు అయ్యే చిరునామాను సూచించని పాయింటర్ nullptr కీవర్డ్తో ప్రారంభించబడాలి (C++11లో పరిచయం చేయబడింది):
int* ptr = nullptr; // Safe null pointerమీరే ప్రయత్నించండి
ప్రధానంగా, 42కి ప్రారంభించబడిన పూర్ణాంక వేరియబుల్ విలువ ఉంది. విలువ యొక్క చిరునామాను సూచించే పూర్ణాంకం ptrకి పాయింటర్ను ప్రకటించండి. విలువ విలువను 100కి సెట్ చేయడానికి ptr యొక్క డిఫెరెన్సింగ్ను ఉపయోగించండి మరియు చివరగా std::cout ఉపయోగించి విలువను ముద్రించండి.
సూచనను చూపించు
పాయింటర్ను `int* ptr = &value;`తో ప్రకటించండి, `*ptr = 100;`ని డిఫెరెన్సింగ్ చేయడం ద్వారా విలువను సవరించండి మరియు `std::cout << value;`ని ముద్రించండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
పాయింటర్ను పూర్ణాంకం (int* ptr)కి అంగీకరించి, అది సూచించే విలువను 2తో గుణించే డబుల్వాల్యూ ఫంక్షన్ను నిర్వచించండి (పాయింటర్ శూన్యం కాకపోతే). ప్రధానంగా, వేరియబుల్ సంఖ్య యొక్క చిరునామాను దాటి డబుల్ వాల్యూకి కాల్ చేసి దాన్ని ప్రింట్ చేయండి.
సూచనను చూపించు
ఫంక్షన్ తప్పనిసరిగా `int* ptr`ని అంగీకరించాలి. లోపల, `*ptr = (_ptr) _ 2`ఉపయోగించండి. ప్రధానంగా దీన్ని`డబుల్ వాల్యూ(&num);`తో కాల్ చేయండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
అందించిన కోడ్ను బట్టి, ఏ వ్యక్తీకరణ మిమ్మల్ని నేరుగా a విలువను సవరించడానికి అనుమతిస్తుంది, దానిని 10కి సెట్ చేస్తుంది?
int a = 5;
int* p = &a;
// quale istruzione assegna 10 ad a?