Search

pointer2

आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम pointerके बारे में और जानेंगे.पिछली बार हमने इस C/C++ programming language tutorial में int pointer का example देखा था परन्तु pointer किसी भी datatype का हो सकता है. struct का भी pointer हो सकता है. हम struct pointer का एक example देखते हैं. अगर आपको struct का use करना नहीं आता तो पहले इसे पढ़ लें.C/C++ struct hindi में पढ़ने के लिए यहाँ click करें.#include <stdio.h>struct rectangle {  int width;  int length;};int main() {  struct rectangle r1;  r1.width = 10;  r1.length = 15;  struct rectangle* r2;  r2 = &r1;  printf("Original width=%d, length=%d\n", (*r2).width, (*r2).length);  r1.width = 20;  r1.length = 25;  printf("r1 changed, width=%d, length=%d\n", (*r2).width, (*r2).length);  (*r2).width = 5;  (*r2).length = 10;  printf("*r2 changed, width=%d, length=%d\n", r1.width, r1.length);  return 0;}ऊपर दिए C/C++ program को चला कर देख लें. उसकाoutput यहाँ समझते हैं. main में हमने पहले struct rectangle type का variable r1 define किया है और pointer r2 declare किया है जो structrectangle का address store कर सकता है. उसमे r1 का address डाल दिया गया है. अब r1 एक variable है और r2 pointer है जिसमे r1 का address है इसलिए अगर हम r1 में value change करते हैं तो r2 से value read करने पर changed value मिलेगी. इसी तरह r2 में value change करते हैं तो r1 से read करने पार changed valueमिलेगी.ऊपर दिए गए program को ध्यान से देखिये. r2 address(pointer) है r1 का, इसलिए *r2 हमें struct rectangle देगा(pointer वाले address की value * लगाने पर आती है इसलिए *r2 और r1 एक ही हैं. इसी तरह (*r2).width और r1.width भी एक ही हैं दोनों में से किसी एक को change करने पर दूसरा भी change हो जाता है.)Important Note about pointer1. (*r2).width लिखने का shortcut r2->width भी होता है. program मे (*r2).width की जगह r2->width और (*r2).length कि जगह r2->length भीलिख सकते हैं. आप ऊपर दिए गए program में यह लिखकर चलाकर देखें.2. कोई भी variable declare करने का मतलब है कि उसमे कोई value नहीं डाली(जैसे int x;) और define करने का मतलब है कि उसमे value भी डाल दी है(जैसे int x=1;) अगर आपने pointer सिर्फ declare किया है और उसमे किसी variable का address नहीं डाला तो उससे value read करने में(* का use करके जैसे*r2) program crash हो जायेगा और segmentation fault दे देगा.आज के लिए इतना ही. अभी pointer के बारे में बहुत कुछ जानना बाकी है.

Share this

Related Posts

Previous
Next Post »

Thnx