গঠন এবং ইউনিয়ন মধ্যে পার্থক্য
উভয়ই মত ভিন্ন। গঠন এবং ইউনিয়ন সি-ভাষা ভাষায় ব্যবহারকারী-সংজ্ঞায়িত ডেটা প্রকার এবং ধারণাগতভাবে একই, তবে, কিছু পদ্ধতিতে তাদের মেমরি যেমন বরাদ্দ করা হয় তাদের মত একই রকম। তারা একইভাবে ঘোষিত হয় কিন্তু তারা ভিন্নভাবে কাজ করে। তারা ব্যবহারকারীকে একটি একক নামের অধীনে বিভিন্ন ডেটা প্রকারগুলিকে একত্রিত করার অনুমতি দেয়। যখন পৃথক মেমরি অবস্থান প্রতিটি সদস্যের জন্য গঠন ভেরিয়েবল ঘোষণা করা হয়, একটি ইউনিয়ন ভেরিয়েবলের বিভিন্ন সদস্য একই মেমরি অবস্থান ভাগ করে। কাঠামো এবং ইউনিয়ন মধ্যে পার্থক্য অধ্যয়ন সম্পর্কে বিস্তারিত আছে যাক
গঠন কি?
একটি কাঠামো C- এর মধ্যে অন্য একটি ইউজার-সংজ্ঞায়িত ডেটা টাইপ যা ব্যবহারকারীকে মেমরির একটি ব্লকের একক প্রকারের ডাটা প্রকারের বিভিন্ন ধরনের একত্রিত করতে সহায়তা করে। একটি কাঠামো একে অপরের সাথে সম্পর্কিত সাধারণ এবং জটিল ডেটা ধরনের উভয় ধারণ করতে পারে, যা অন্যথায়, অনুভূতি তৈরি করবে না। একটি কাঠামোর মধ্যে প্রতিটি সদস্য তার নিজস্ব মেমরি অবস্থান পায় যাতে এটি অ্যাক্সেস এবং যে কোনও সময়ে উদ্ধার করা যায়।
যখন অনেকগুলি তথ্য এমন একটি গ্রুপের মতো গোষ্ঠীভুক্ত করা হয় যা একটি বইয়ের মধ্যে অনেক সদস্যের তথ্য বা একটি ঠিকানা বই যা একক পরিচিতি সম্পর্কে সমস্ত তথ্য সঞ্চয় করে - নাম, ঠিকানা, যোগাযোগ নম্বর, এবং তাই। প্রতিটি সদস্যের ঠিকানা আরোহী ক্রমে হবে যার মানে প্রতিটি সদস্যের মেমরি বিভিন্ন অফসেট মানগুলিতে শুরু হবে। একজন সদস্যের মূল্য পরিবর্তনকারী অন্য সদস্যদের উপর কোন প্রভাব থাকবে না।
একটি 'struct' কি-ওয়ার্ডটি একক নামের অধীনে বিভিন্ন ডাটা টাইপের কাঠামো সংজ্ঞায়িত করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, যদি আপনি একটি কর্মচারী ডাটাবেস তৈরি করতে চান, তাহলে আপনাকে একক সত্তা অধীনে কর্মচারীর নাম, বয়স, ফোন এবং বেতন বিবরণ সংরক্ষণ করতে হবে। এটি 'struct' কীওয়ার্ড দ্বারা সম্পন্ন হয়, যা কম্পাইলারকে বলে যে একটি গঠন ঘোষিত হয়েছে।
struct কর্মচারী {
স্ট্রিং নাম;
স্ট্রিং বয়স;
স্ট্রিং ফোন;
স্ট্রিং বেতন;
} emp1, emp2;
এখানে, 'কর্মচারী' হচ্ছে কাঠামো এবং দুটি ভেরিয়েবল 'emp1' এবং 'emp2' টাইপ 'কর্মচারী' ধরনের তৈরি করা হয়। ক্লোজিং বন্ধনীগুলি একটি সেমিকোলন (;) দ্বারা অনুসরণ করা আবশ্যক।
একটি কাঠামোর সদস্য দুই ধরনের অপারেটর দ্বারা অ্যাক্সেস করা যায়:
- সদস্য অপারেটর
- গঠন পয়েন্টার অপারেটর
ইউনিয়ন কি?
এটি একটি বিশেষ ডেটা টাইপ যা C ব্যবহার করে, যা ব্যবহারকারীকে একই ধরনের মেমরি অবস্থানে বিভিন্ন ধরনের ডাটা টাইপ করতে দেয়। একটি ইউনিয়ন বেশিরভাগ কাঠামোর অনুরূপ এবং এটি 'struct' শব্দটির পরিবর্তে কীওয়ার্ড 'ইউনিয়ন' শব্দটি পরিবর্তিত করে সংজ্ঞায়িত করা যেতে পারে। সদস্যদের একটি ইউনিয়ন মধ্যে একে অপরের মেমরি আচ্ছাদন এবং এটি তার সদস্যদের মাপসই যথেষ্ট বড়।
যখন একটি পরিবর্তনশীল ইউনিয়ন যুক্ত হয়, তখন কম্পাইলার সর্বনিম্ন মেমরির আকার বিবেচনা করে মেমরি বরাদ্দ করে, তাই ইউনিয়নটির আকার বৃহত্তম ডেটা সদস্যের আকারের সমান।একটি ইউনিয়ন অনেক সদস্যদের সঙ্গে সংজ্ঞায়িত করা যেতে পারে, কিন্তু শুধুমাত্র একটি সদস্য সময় যে কোন সময়ে উদাহরণে মান রয়েছে।
ঠিকানাটি একটি ইউনিয়নের সকল সদস্যদের জন্য একই, যার মানে প্রতিটি সদস্য একই অফসেট মানতে শুরু করে। এবং এক সদস্যের মান পরিবর্তনকারী অন্য সদস্যদের মান প্রভাবিত করবে। যখন আপনি কিছু সংরক্ষণ করতে চান তখন একটি ইউনিয়ন ব্যবহার করা যেতে পারে যা বিভিন্ন ডাটা টাইপের একটি।
ইউনিয়ন কর্মচারী {
অক্ষর নাম [32];
স্বতন্ত্র বয়স;
ভাতার বেতন;
};
এখানে কীওয়ার্ড 'ইউনিয়ন' ইউনিয়নকে সংজ্ঞায়িত করে যা গঠনটি ঘোষণার অনুরূপ। ভেরিয়েবলটি একটি স্ট্রিং মান সংরক্ষণ করতে পারে যা 'কর্মচারীর নাম', একটি পূর্ণসংখ্যা মান যা 'কর্মচারীর বয়স' বা 'কর্মচারীর বেতন' প্রতিনিধিত্ব করে এমন একটি ভাসা।
গঠন এবং ইউনিয়ন মধ্যে পার্থক্য
1 কীওয়ার্ড
কীওয়ার্ড 'struct' একটি কাঠামো সংজ্ঞায়িত করতে ব্যবহৃত হয় এবং 'ইউনিয়ন' কীওয়ার্ডটি একটি ইউনিয়ন নির্ধারণ করতে ব্যবহৃত হয়।
2। মেমরি বরাদ্দকরণ
মেমরির স্থান একটি কাঠামোর মধ্যে সদস্যদের জন্য বরাদ্দ করা হয় এবং সদস্যদের বিভিন্ন ঠিকানা আছে যা মেমরি ভাগ করে না। অন্যদিকে, একটি ইউনিয়ন, তার সমস্ত সদস্যদের জন্য একই মেমরি স্থান ভাগ করে নেয় যাতে ভাগ করা মেমরি অবস্থান বরাদ্দ করা হয়।
3। সদস্য অ্যাক্সেস
একটি ইউনিয়ন এক সময়ে শুধুমাত্র এক সদস্য অ্যাক্সেস করার জন্য এটির সমস্ত সদস্যদের জন্য এক সময়ে একটি একক মূল্য সঞ্চয় করে। একাধিক মান একটি কাঠামোর মধ্যে সংরক্ষিত করা যেতে পারে, যাতে কোনো সদস্য মান অ্যাক্সেস এবং যে কোন সময় উদ্ধার করা যাবে।
4। আকার
একটি কাঠামো আকার সমান সমতুল্য সমতুল্য সমস্ত সদস্য বা তার বেশি, যদিও একটি ইউনিয়ন আকার বৃহত্তম আকার সদস্য আকারের সমান।
5। প্রারম্ভিকীকরণ
একটি কাঠামোর মধ্যে, একাধিক সদস্য একযোগে শুরু করা যেতে পারে, যখন একটি ইউনিয়নে, শুধুমাত্র প্রথম সদস্য তার প্রকারের মান সঙ্গে আরম্ভ করা যেতে পারে
5। মূল্য
একটি কাঠামো সমস্ত সদস্যদের বিভিন্ন মূল্য সঞ্চয় করতে পারে এবং এক সদস্যের মান পরিবর্তন অন্য সদস্যদের মান উপর কোন প্রভাব থাকবে না। একটি ইউনিয়ন তার সমস্ত সদস্যদের জন্য একই মান এবং একটি সদস্যের মান পরিবর্তন অন্যের মূল্য প্রভাবিত করবে যখন
গঠন বনাম ইউনিয়ন
গঠন | ইউনিয়ন |
স্ট্রাক্ট কীওয়ার্ডটি একটি কাঠামো নির্ধারণ করতে ব্যবহৃত হয়। | একটি ইউনিয়ন সংজ্ঞায়িত করার জন্য ইউনিয়ন কীওয়ার্ড ব্যবহার করা হয়। |
সদস্যরা একটি কাঠামোর মধ্যে মেমরি ভাগ করে না। | সদস্য একটি ইউনিয়ন মধ্যে মেমরি স্থান ভাগ। |
কোনও সদস্য একটি কাঠামোর যে কোনো সময়ে পুনরুদ্ধার করা যাবে। | একটি ইউনিয়নে এক সময় শুধুমাত্র এক সদস্য অ্যাক্সেস করা যায়। |
একটি কাঠামোর কয়েকটি সদস্য একযোগে আরম্ভ করা যেতে পারে। | শুধুমাত্র প্রথম সদস্য চালু করা যাবে। |
কাঠামোর আকার প্রতিটি সদস্যের আকার সমান। | ইউনিয়নটির আকার বৃহত্তম সদস্যের আকার সমান। |
এক সদস্যের পরিবর্তিত মূল্য অন্যের মূল্যকে প্রভাবিত করবে না। | এক সদস্যের মান পরিবর্তন অন্য সদস্য মান প্রভাবিত করবে। |
সকল সদস্যদের জন্য বিভিন্ন মূল্য সঞ্চয় করুন। | সমস্ত সদস্যদের জন্য একই মান দোকান। |
সংক্ষিপ্ত বিবরণ
- গঠন এবং ইউনিয়ন উভয়ই ব্যবহারকারী-সংজ্ঞায়িত ডাটা টাইপের C যা কার্যকরী এবং ধারণাগতভাবে একই, তবে কিছু উপায়ে তা বেশ ভিন্ন।
- উভয়ই বিভিন্ন ডাটা টাইপের ভেরিয়েবল রয়েছে কিন্তু তারা ভেরিয়েবল ঘোষণা এবং সদস্যদের অ্যাক্সেস করার জন্য একই সিনট্যাক্স ব্যবহার করে। একটি কাঠামো 'struct' কীওয়ার্ড দ্বারা সংজ্ঞায়িত করা হলেও, একটি ইউনিয়ন শব্দটি 'ইউনিয়ন' দ্বারা সংজ্ঞায়িত করা হয়
- প্রতিটি সদস্য একটি কাঠামোর মধ্যে আলাদা মেমরি অবস্থান পায়, যখন একটি ইউনিয়ন, মোট মেমরি স্থান বৃহত্তম আকার সদস্য সমতুল্য। সমস্ত সদস্য একটি ইউনিয়ন একই মেমরি স্থান ভাগ।
- কোনও শ্রেণীতে যেকোনো সদস্য একটি কাঠামোর মধ্যে ব্যবহার করা যেতে পারে, তবে কোনও ইউনিটের মধ্যে, কেবলমাত্র সেই ভেরিয়েবলটিই ব্যবহার করা যায় যা সম্প্রতি সংরক্ষণ করা হয়েছে।