पाठ 20 / 36

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

पॉइंटर हिलाना मतलब पूरे एलिमेंट से हिलाना, बाइट से नहीं।

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

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

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