पॉइंटर अंकगणित का उपयोग C भाषा में जोड़, घटाव, इन्क्रीमेंट आदि जैसे अंकगणितीय संचालन को लागू करने के लिए किया जाता है। चार पॉइंटर अंकगणित हैं जैसे जोड़, घटाव, इन्क्रीमेंट और डिक्रीमेंट। 32-बिट मशीन में, यह मान को 2 से इन्क्रीमेंट या डिक्रीमेंट करता है और यह 2 * नंबर जोड़ या घटा देगा। 64-बिट मशीन में, यह मान को 4 से इन्क्रीमेंट या डिक्रीमेंट करता है और यह 4 * नंबर जोड़ या घटा देगा।
यहां C भाषा में पॉइंटर अंकगणित का एक उदाहरण है:
उदाहरण
#include <stdio.h>
int main() {
int val = 28;
int *pt;
pt = &val;
printf("पॉइंटर का पता: %p\n", (void*)pt);
pt = pt + 5;
printf("पॉइंटर में जोड़: %p\n", (void*)pt);
pt = pt - 5;
printf("पॉइंटर से घटाव: %p\n", (void*)pt);
pt = pt + 1;
printf("पॉइंटर में इन्क्रीमेंट: %p\n", (void*)pt);
pt = pt - 1;
printf("पॉइंटर में डिक्रीमेंट: %p\n", (void*)pt);
return 0;
}
आउटपुट
पॉइंटर का पता: 0x7ffd1234567c पॉइंटर में जोड़: 0x7ffd12345690 पॉइंटर से घटाव: 0x7ffd1234567c पॉइंटर में इन्क्रीमेंट: 0x7ffd12345680 पॉइंटर में डिक्रीमेंट: 0x7ffd1234567c
उपरोक्त प्रोग्राम में, अंकगणितीय संचालन (जोड़, घटाव आदि) पॉइंटर वेरिएबल *pt पर लागू किए जाते हैं।
महत्वपूर्ण सुधार: मूल कोड में %u फॉर्मेट स्पेसिफायर का उपयोग किया गया था जो पॉइंटर्स के लिए गलत है। सही स्पेसिफायर %p है और पॉइंटर को (void*) में कास्ट करना चाहिए।
पॉइंटर अंकगणित के नियम
- पॉइंटर + इंटीजर = पॉइंटर (पॉइंटर टाइप के आकार से स्केल्ड)
- पॉइंटर - इंटीजर = पॉइंटर
- पॉइंटर - पॉइंटर = ptrdiff_t (इंटीजर, तत्वों की संख्या)
- पॉइंटर + पॉइंटर = अवैध
- इन्क्रीमेंट/डिक्रीमेंट अगले/पिछले तत्व पर जाता है
- केवल समान ऐरे/ऑब्जेक्ट के भीतर के पॉइंटर्स पर मान्य
उदाहरण: ऐरे ट्रैवर्सल
int arr[] = {10, 20, 30, 40, 50};
int *p = arr;
for (int i = 0; i < 5; i++) {
printf("%d ", *p);
p++; // अगले इंटीजर पर जाता है
}