मैं कई सालों से प्रोग्रामिंग सी/सी ++ रहा हूं, लेकिन आजकल आकस्मिक खोज ने मुझे कुछ हद तक उत्सुक बना दिया ... दोनों आउटपुट एक ही परिणाम को नीचे दिए गए कोड में क्यों उत्पन्न करते हैं? (arr
, arr[0]
का पता ज़ाहिर है arr[0]
के लिए सूचक यानी मैं &arr
उम्मीद है कि सूचक की पता होना करने के लिए होगा, लेकिन यह arr
रूप में एक ही मूल्य है।)एआर और एआरआर क्यों समान है?
int arr[3];
cout << arr << endl;
cout << &arr << endl;
टिप्पणी: इस सवाल था बंद, लेकिन अब यह फिर से खोला गया है। (धन्यवाद?)
मुझे पता है कि &arr[0]
और arr
एक ही नंबर के लिए मूल्यांकन करता है, लेकिन यह है कि मेरे सवाल नहीं है! सवाल यह है कि &arr
और arr
उसी संख्या का मूल्यांकन क्यों करता है। यदि arr
एक शाब्दिक है (किसी भीवेयर को संग्रहीत नहीं किया गया है), तो संकलक को शिकायत करनी चाहिए और कहें कि arr
एक लाभा नहीं है। यदि arr
का पता कहीं भी संग्रहीत किया गया है तो &arr
मुझे उस स्थान का पता देना चाहिए। (लेकिन यह मामला नहीं है)
अगर मैं लिखना
स्थिरांक पूर्णांक * arr2 = आगमन;
तो किसी भी पूर्णांक i
के लिए arr2[i]==arr[i]
, लेकिन ।
"उस सूचक का पता" का क्या अर्थ है? सूचक एक चर में संग्रहित नहीं है। –
@ डेविड श्वार्टज़, अगर मैंने int * arr2 = new int [3] लिखा था, तो और arr2 एक चर में संग्रहीत किया गया होगा। शायद सर एक शाब्दिक स्थिर है? लेकिन अगर कोई स्थिर (उदा। और 123) का पता लेता है तो संकलक शिकायत करता है (123 एक लालसा नहीं है)। जब मैंने एआर का पता लिया तो संकलक शिकायत नहीं करता था। – ragnarius
मुझे नहीं लगता कि यह एक डुप्लिकेट है! – ragnarius