কম্পিউটার টিউটোরিয়াল

C-তে স্ট্রাকচার মেম্বার অ্যারের ডিপ কপি (Deep Copy) আচরণ

সংক্ষিপ্ত বিবরণ

সি-তে স্ট্রাকচার অ্যাসাইনমেন্ট (`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) পয়েন্টার দিয়ে রেফার করা হলে ডিপ কপি হয় না — ম্যানুয়াল কপি করতে হয়।

  1. জাভাস্ক্রিপ্ট JSON অ্যারে

  2. জাভাস্ক্রিপ্টে অ্যারে vs সেট

  3. সি/সি++-তে মাল্টিডাইমেনশনাল অ্যারে (Multidimensional Arrays)

  4. সি-এ মাল্টিডাইমেনশনাল অ্যারে (Multidimensional Arrays)