C++ में पॉइंटर और रेफरेंस के बीच क्या अंतर हैं?
नमस्ते, सहकर्मियों! मैंने अभी-अभी Java और Python के बाद C++ सीखना शुरू किया है, और मुझे पॉइंटर और रेफरेंस को लेकर भ्रम हो रहा है। दोनों ही ऑब्जेक्ट्स को कॉपी किए बिना उनके साथ काम करने की अनुमति देते हैं, लेकिन मुझे समझ नहीं आ रहा कि कब किसका उपयोग करूं।
यहाँ मेरे कोड का एक उदाहरण है। मैंने एक फंक्शन लिखा जो दो वेरिएबल्स के मानों को आपस में बदलता है। पहले मैंने रेफरेंस का उपयोग करने की कोशिश की:
```cpp
void swap_ref(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
```
फिर मुझे पता चला कि इसे पॉइंटर के साथ भी किया जा सकता है:
```cpp
void swap_ptr(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
दोनों तरीके काम करते हैं। लेकिन मैंने देखा कि पॉइंटर के साथ कॉल करते समय हर जगह स्टार और एम्परसैंड लगाने पड़ते हैं, जबकि रेफरेंस के साथ ऐसा नहीं है। मैंने यह भी सुना है कि रेफरेंस को पुनः असाइन नहीं किया जा सकता, जबकि पॉइंटर को किया जा सकता है। और यह कि रेफरेंस को हमेशा इनिशियलाइज़ किया जाना चाहिए, जबकि पॉइंटर nullptr हो सकते हैं।
मेरा मुख्य प्रश्न: पॉइंटर और रेफरेंस के बीच मूलभूत अंतर क्या हैं?