पाठ 21 / 36
पॉइंटर और ऐरे
ऐरे का नाम अपने पहले एलिमेंट के पॉइंटर में बदल (decay) जाता है।
ऐरे का नाम = एलिमेंट 0 का एड्रेस
ज़्यादातर एक्सप्रेशन में, ऐरे का नाम अपने पहले एलिमेंट के पॉइंटर में decay होता है। इसीलिए arr और &arr[0] परस्पर बदले जा सकते हैं, और arr[i] असल में *(arr + i) है।
एक ही परिणाम, दो नोटेशन
इंडेक्सिंग और पॉइंटर-ऑफसेट डीरेफ़रेंसिंग एक जैसे परिणाम देते हैं।
int arr[4] = {1, 2, 3, 4};
printf("%d\n", arr[2]);
printf("%d\n", *(arr + 2)); // same thing
Output:
3 3
पर ऐरे पॉइंटर नहीं हैं
sizeof(arr) पूरे ऐरे का बाइट साइज़ देता है, जबकि किसी पॉइंटर पर sizeof सिर्फ पॉइंटर का साइज़ (आमतौर पर 8 बाइट) देता है। Decay तभी होता है जब ऐरे का उपयोग हो, sizeof में नहीं।