What is struct pointer C programming language? - Tech S K

Latest

Notes of Computers Technology Information,Latest Tech News, O Level Software Notes,RS CIT notes The notes of all the computer's exams are available here

Recent Posts

Translate

बुधवार, 13 जून 2018

What is struct pointer C programming language?



स्ट्रक्चर पॉइंटर सी प्रोग्रामिंग लैंग्वेज क्या है?

What is struct pointer  C programming language
आज Hindi के इस C programming language को आगे बढ़ाते हुए हम pointer के बारे में और जानेंगे.

पिछली बार हमने इस C programming language tutorial में int pointer का example देखा था परन्तु pointer किसी भी datatype का हो सकता है. struct का भी pointer हो सकता है. हम struct pointer का एक example देखते हैं. अगर आपको struct का use करना नहीं आता तो पहले इसे पढ़ लें. 
#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 किया है जो struct rectangle का 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 pointer
1. (*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 के बारे में बहुत कुछ जानना बाकी है. 

कोई टिप्पणी नहीं:

एक टिप्पणी भेजें

Friends, if you like this post then please share it on Facebook! Please tell through the comments that these posts will welcome you as well as your suggestions.