पॉइंटर्स
पॉइंटर्स का उपयोग वेरिएबल के एड्रेस को स्टोर करने के लिए किया जाता है।
सिंटैक्स
Type *pointer;
आरंभीकरण
Type *pointer; Pointer = variable name;
कार्य
- पॉइंटर्स का उपयोग वेरिएबल के एड्रेस को स्टोर करने के लिए किया जाता है।
- पॉइंटर्स में एक शून्य मान असाइन किया जा सकता है।
- पॉइंटर को पास बाय रेफरेंस द्वारा संदर्भित किया जा सकता है।
- स्टैक पर पॉइंटर का अपना मेमोरी पता और आकार होता है।
उदाहरण
#include <iostream> using namespace std; int main() { // A normal integer variable int a = 7; // A pointer variable that holds address of a. int *p = &a; // Value stored is value of variable "a" cout<<"Value of Variable : "<<*p<<endl; // It will print the address of the variable "a" cout<<"Address of Variable : "<<p<<endl; // reassign the value. *p = 6; cout<<"Value of the variable is now: "<<*p<<endl; return 0; }
आउटपुट
Value of Variable : 7 Address of Variable : 0x6ffe34 Value of the variable is now: 6
C++ में स्मार्ट पॉइंटर्स
स्मार्ट पॉइंटर एक अमूर्त डेटा प्रकार है जिसके उपयोग से हम एक सामान्य पॉइंटर इस तरह से बना सकते हैं कि इसे मेमोरी मैनेजमेंट जैसे फाइल हैंडलिंग, नेटवर्क सॉकेट आदि के रूप में इस्तेमाल किया जा सकता है, साथ ही यह स्वचालित विनाश, संदर्भ गणना आदि जैसे कई काम कर सकता है।
सी ++ में स्मार्ट पॉइंटर, टेम्पलेट क्लास के रूप में कार्यान्वित किया जा सकता है, जो * और -> ऑपरेटर के साथ अतिभारित है। auto_ptr, shared_ptr, unique_ptr और कमजोर_ptr स्मार्ट पॉइंटर के रूप हैं जिन्हें C++ लाइब्रेरी द्वारा कार्यान्वित किया जा सकता है।
उदाहरण
#include<iostream> using namespace std; // A generic smart pointer class template <class T> class Smartpointer { T *p; // Actual pointer public: // Constructor Smartpointer(T *ptr = NULL) { p = ptr; } // Destructor ~Smartpointer() { delete(p); } // Overloading dereferencing operator T & operator * () { return *p; } // Overloding arrow operator so that members of T can be accessed // like a pointer T * operator -> () { return p; } }; int main() { Smartpointer<int> p(new int()); *p = 26; cout << "Value is: "<<*p; return 0; }
आउटपुट
Value is: 26
C++ में साझा पॉइंटर्स
shared_ptr स्मार्ट पॉइंटर के रूप में से एक है जिसे सी ++ पुस्तकालयों द्वारा कार्यान्वित किया जा सकता है। यह कच्चे सूचक का एक कंटेनर है और एक संदर्भ गिनती (किसी वस्तु, स्मृति के ब्लॉक, डिस्क स्थान या अन्य संसाधनों जैसे संसाधन के संदर्भ, पॉइंटर्स या हैंडल की संख्या को संग्रहीत करने की एक तकनीक) सहयोग में इसके निहित सूचक की स्वामित्व संरचना है Shared_ptr की सभी प्रतियों के साथ।
एक ऑब्जेक्ट जिसे निहित कच्चे सूचक द्वारा संदर्भित किया जाता है, केवल तभी नष्ट हो जाएगा जब सभी प्रतिलिपि साझा_ptr से नष्ट हो जाती है।
उदाहरण
#include<iostream> #include<memory> using namespace std; int main() { shared_ptr<int> ptr(new int(7)); shared_ptr<int> ptr1(new int(6)); cout << ptr << endl; cout << ptr1 << endl; // Returns the number of shared_ptr objects // referring to the same managed object. cout << ptr.use_count() << endl; cout << ptr1.use_count() << endl; // Relinquishes ownership of ptr on the object // and pointer becomes NULL ptr.reset(); cout << ptr.get() << endl; cout << ptr1.use_count() << endl; cout << ptr1.get() << endl; return 0; }
आउटपुट
0xe80900 0xe80940 1 1 0 1 0xe80940