Search

poiter 3

आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम pointerके बारे में और जानेंगे.नीचे दिए गए इस example को देखिये और सोचिये कि यह क्या print करेगा, आपको इसका actual output देखकर आश्चर्य होगा.#include <stdio.h>void add1(int i) {  i = i + 1;}int main() {  int x = 5;  printf("before adding x = %d \n", x);  add1(x);  printf("after adding x = %d \n", x);  scanf("%d", &x);  return 1;}run करने पर इसका output यह आएगा.before adding x = 5 after adding x = 5 अब समझते हैं कि यह output क्यों आ रहा है. अगर आप add1 function देखेंगे तो उसमे जो parameter(argument) pass किया जाता है उसकीvalue 1 बढ़ा रहा है. main में पहले x की value 5 है इसलिए पहली बार x = 5 print हुआ है. उसके बाद add1 function में x को pass किया है इसलिए x की value 1 बढ़ जाना चाहिए परन्तु उसकी value 5 ही है और इसीलिए बाद में भी x = 5 ही print हो रहा है.इसका कारण यह है कि जब add1 function call हुआ तोउसमे pass किये गए variable x की एक अलग copy बनगयी, add1 function ने उस copy की value change की है, इसलिए original x की value change नहीं हुई.जब भी कोई function call होता है उसमे pass किये गए variable की copy बन जाती है और वह copy call किये गए function को दी जाती है. इसलिए call किया गया function अगर arguments की value changeकरता है तो original variable की value change नहीं होती, copy की value change होती है.अब नीचे वाला C++ program देखिये जो pointer का use करके लिखा गया है और सोचिये कि इसका output क्या होगा#include <stdio.h>void add1(int* i) {
  *i = *i + 1;}int main() {  int x = 5;  printf("before adding x = %d \n", x);  add1(&x);  printf("after adding x = %d \n", x);  scanf("%d", &x);  return 1;}run करने पर इसका output यह आएगा.before adding x = 5 after adding x = 6 अब इसे समझते हैं कि यहाँ function call करने पर xकी value बढ़ क्यों गयी. यहाँ add1 function intनहीं लेता बल्कि int variable का address लेता है, और उस address पर जो भी value होती है उसे 1 बढ़ा देता है.main में जब add1 function को call किया है तो उसमे x का address pass किया है. ऊपर बताये गए अनुसार x के address की एक copy बनेगी जो add1 function को दी जायेगी. अगर add1 function address को change करता तो x की value change नहीं होती पर add1 function उस address मेंstore variableकी value change कर रहा है. चाहे वह original address हो या address की copy, address तो उसी variable का ही रहेगा, इसलिए अगर हम उस address पर store variable को change करते हैं original variableभी change हो जायेगा.अभी pointer के बारे में और जानना भी बाकी है. इसलिए आगे के लेखों का wait करें.

Share this

Related Posts

Previous
Next Post »

Thnx