# पॉइंटर और ऐरे — C प्रोग्रामिंग

Source: https://www.geekswithgeeks.com/hi/c/c-pointers-arrays

> ऐरे का नाम अपने पहले एलिमेंट के पॉइंटर में बदल (decay) जाता है।

## ऐरे का नाम = एलिमेंट 0 का एड्रेस

ज़्यादातर एक्सप्रेशन में, ऐरे का नाम अपने पहले एलिमेंट के पॉइंटर में **decay** होता है। इसीलिए `arr` और `&arr[0]` परस्पर बदले जा सकते हैं, और `arr[i]` असल में `*(arr + i)` है।

## एक ही परिणाम, दो नोटेशन

इंडेक्सिंग और पॉइंटर-ऑफसेट डीरेफ़रेंसिंग एक जैसे परिणाम देते हैं।

```c
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` में नहीं।
