কম্পিউটার

সি-তে স্ট্রাকট মেম্বার অ্যারেগুলির গভীর অনুলিপি


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

উদাহরণ

#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

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

  2. অ্যারে বনাম জাভাস্ক্রিপ্টে সেট।

  3. C/C++ এ বহুমাত্রিক অ্যারে

  4. সি-তে বহুমাত্রিক অ্যারে