पाठ 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 में नहीं।