কাঠামো আমাদের ব্যবহারকারীর সংজ্ঞায়িত ডেটাটাইপ তৈরি করতে দেয়। কাঠামোর সদস্য আদিম ডেটাটাইপ হতে পারে বা এটি স্ট্যাটিকভাবে বরাদ্দ করা মেমরির একটি অ্যারে হতে পারে। যখন আমরা একটি স্ট্রাকচার ভেরিয়েবলকে অন্যটিতে বরাদ্দ করি তখন অগভীর অনুলিপি করা হয়। যাইহোক, একটি ব্যতিক্রম আছে, যদি কাঠামো সদস্য একটি অ্যারে হয় তাহলে কম্পাইলার স্বয়ংক্রিয়ভাবে গভীর অনুলিপি সম্পাদন করে। আসুন উদাহরণ সহ এটি দেখি -
উদাহরণ
#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