সংক্ষিপ্ত বিবরণ
সি-তে স্ট্রাকচার অ্যাসাইনমেন্ট (`s2 = s1`) শ্যালো কপি করে। কিন্তু যদি স্ট্রাকচারের মেম্বার একটি স্ট্যাটিক অ্যারে হয়, তবে কম্পাইলার স্বয়ংক্রিয়ভাবে **ডিপ কপি** করে।
উদাহরণ কোড
typedef struct {
int roll;
char name[128];
} student_t;
student_t s1 = {1, "tom"};
student_t s2 = s1; // ডিপ কপি হয় name[] এর জন্য
s2.name[0] = 'T'; // s1 প্রভাবিত হয় না
s2.name[1] = 'O';
s2.name[2] = 'M';
আউটপুট
Roll num: 1, name: tom Roll num: 1, name: TOM
ব্যাখ্যা
- স্ট্যাটিক অ্যারে মেম্বার (`char name[128]`) স্ট্রাকচারের অংশ, আলাদা মেমরি ব্লক নয়
- অ্যাসাইনমেন্টের সময় বাইট-টু-বাইট কপি হয় → ডিপ কপি
- পয়েন্টার মেম্বার (`char *name`) হলে শ্যালো কপি হতো (একই মেমরি শেয়ার)
নোট
ডাইনামিক্যালি অ্যালোকেটেড মেমরি (malloc) পয়েন্টার দিয়ে রেফার করা হলে ডিপ কপি হয় না — ম্যানুয়াল কপি করতে হয়।