पॉइंटर घोषणा, आरंभीकरण और एक्सेस
int qty = 179;
int *p;
p = &qty; // p अब qty का एड्रेस रखता है
पॉइंटर्स के साथ अंकगणितीय ऑपरेशन्स
यदि पॉइंटर्स उचित रूप से घोषित और आरंभीकृत हैं, तो निम्न वैध हैं:
वैध ऑपरेशन्स
*p1 + *p2,*p1 - *p2,*p1 * *p2,*p1 / *p2(वैल्यूज पर ऑपरेशन)p1 + 4,p2 - 2(पॉइंटर अंकगणित: एलिमेंट्स आगे/पीछे)p1 - p2(दोनों समान ऐरे को पॉइंट करें तो बीच के एलिमेंट्स की संख्या)p1++,--p2(इन्क्रीमेंट/डिक्रीमेंट)sum += *p2(वैल्यू जोड़ना)p1 > p2,p1 == p2,p1 != p2(तुलना: समान ऐरे में पोजीशन)
अमान्य ऑपरेशन्स
p1 + p2(दो एड्रेस जोड़ने का कोई अर्थ नहीं)p1 * p2,p1 / p2,p1 / 3
प्रोग्राम उदाहरण
#include <stdio.h>
int main() {
int a = 12, b = 4;
int *p1 = &a, *p2 = &b;
int x, y;
x = *p1 * *p2 - 6; // 12 * 4 - 6 = 42
y = 4 - *p2 / *p1 + 10; // 4 - 4/12 + 10 = 14 (इंटीजर डिवीजन)
printf("Address of a = %p\n", (void*)p1);
printf("Address of b = %p\n", (void*)p2);
printf("a = %d, b = %d\n", a, b);
printf("x = %d, y = %d\n", x, y);
return 0;
}
आउटपुट
Address of a = 0x7ffe... Address of b = 0x7ffe... a = 12, b = 4 x = 42, y = 14
व्याख्या
*p1है 12,*p2है 4।x = 12 * 4 - 6 = 48 - 6 = 42y = 4 - 4/12 + 10 = 4 - 0 + 10 = 14(इंटीजर डिवीजन: 4/12 = 0)
सावधानियां
- पॉइंटर्स को उपयोग से पहले आरंभीकृत करें।
- डीरेफरेंस करने से पहले NULL चेक करें।
- पॉइंटर अंकगणित केवल समान ऐरे के भीतर वैध है।