संरचना हमें उपयोगकर्ता परिभाषित डेटाटाइप बनाने की अनुमति देती है। संरचना सदस्य आदिम डेटाटाइप हो सकता है या यह स्थिर रूप से आवंटित स्मृति की एक सरणी हो सकती है। जब हम एक स्ट्रक्चर वैरिएबल को दूसरे को असाइन करते हैं तो उथली कॉपी की जाती है। हालांकि, एक अपवाद है, यदि संरचना सदस्य एक सरणी है तो संकलक स्वचालित रूप से गहरी प्रतिलिपि करता है। आइए इसे उदाहरण के साथ देखें -
उदाहरण
#include <stdio.h> #include <string.h> typedef struct student { int roll_num; char name[128]; } student_t; void print_struct(student_t *s) { printf("Roll num: %d, name: %s\n", s->roll_num, s->name); } int main() { student_t s1, s2; s1.roll_num = 1; strcpy(s1.name, "tom"); s2 = s1; // Contents of s1 are not affected as deep copy is performed on an array s2.name[0] = 'T'; s2.name[1] = 'O'; s2.name[2] = 'M'; print_struct(&s1); print_struct(&s2); return 0; }
आउटपुट
जब आप उपरोक्त कोड को संकलित और निष्पादित करते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
Roll num: 1, name: tom Roll num: 1, name: TOM