पाठ 21 / 38

पॉइंटर अंकगणित

Pointer arithmetic से pointers को पूरे elements के हिसाब से बढ़ाएँ और देखें कि यह array indexing से कैसे मेल खाता है।

p + 1 पूरा एलिमेंट छोड़ता है

p + 1 में 1 बाइट नहीं जुड़ता — इसमें sizeof(*p) बाइट जुड़ते हैं, और यह उस टाइप के अगले एलिमेंट पर पहुँचता है। इसी वजह से पॉइंटर + ऐरे इंडेक्सिंग सहजता से काम करती है।

पॉइंटर से ऐरे में चलना

पॉइंटर में जोड़ना और डीरेफ़रेंस करना ऐरे इंडेक्सिंग के समान है।

int nums[3] = {5, 10, 15};
int *p = nums;         // points to nums[0]

printf("%d\n", *p);       // 5
printf("%d\n", *(p + 1)); // 10
printf("%d\n", *(p + 2)); // 15

Output:

5
10
15

केवल ऐरे के भीतर (या एक आगे तक)

पॉइंटर अंकगणित केवल ऐरे की सीमा के भीतर, या अंत से एक एलिमेंट आगे तक (केवल तुलना के लिए, डीरेफ़रेंस के लिए नहीं) सुपरिभाषित है। आगे जाना अनिर्धारित व्यवहार है।