मैं C++ Primer
पढ़ रहा था और मैंने देखा वहाँ एक बयान है कि कहते हैं:क्या किसी संदर्भ में पॉइंटर को परिभाषित करना संभव है?
Because references are not objects, they don't have addresses. Hence, we may not define a pointer to a reference.
लेकिन मैं सिर्फ एक उदाहरण कोड लिखा था और पता चलता है कि यह एक संदर्भ (d
चर) के लिए सूचक बनाने के लिए संभव है।
कोड के नीचे पोस्ट किया जाता है:
#include <iostream>
using namespace std;
int main(){
int a = 1024;
int &b = a; // a reference to int
int &c = b; // a reference to another reference
int *d = &b; // a pointer to a reference
int *(&e) = d; // a reference to a pointer
a = 100;
cout << b << endl;
cout << c << endl;
cout << *d << endl;
cout << *e << endl;
}
तो, कुछ भी अपने परीक्षण के साथ गलत? या C++ Primer
में बयान गलत है?
मैं C++ Primer
पांचवां संस्करण पढ़ रहा हूं। बयान पृष्ठ 52, 2.3.2 में है।
@taocp oops, संपादित :-) – yegle
'e' 'int और (* e) = d;' पर स्विच करें और आपको त्रुटि मिलती है: जीसीसी से 'int' 'को पॉइंटर घोषित नहीं किया जा सकता है। इससे यह स्पष्ट हो जाता है कि 'डी' संदर्भ के लिए सूचक नहीं है। – chris
मूल वस्तु के उपनाम के रूप में संदर्भ के बारे में सोचें। संदर्भ आवंटित नहीं करते हैं, स्मृति स्मृति। जैसा कि बताया गया है कि आप उपनाम नाम से संदर्भित ऑब्जेक्ट को इंगित कर सकते हैं, लेकिन उपनाम का प्रतिनिधित्व करने के लिए स्मृति में कुछ भी नहीं है (यह केवल कोड में है)। इसके विपरीत एक सूचक स्मृति को आवंटित करता है और एक मूल्य संग्रहीत करता है (भले ही मान न्यूल हो)। –