ইউনিয়ন হলো সি প্রোগ্রামিং ভাষায় একটি ডেটা টাইপ, যা স্ট্রাকচারের মতো বিভিন্ন ধরনের ডেটা একত্রে সংরক্ষণ করতে ব্যবহৃত হয়। তবে স্ট্রাকচারের সাথে এর মূল পার্থক্য হলো, ইউনিয়নে সব মেম্বার একই মেমোরি লোকেশন শেয়ার করে। ফলে একসাথে একাধিক মেম্বারকে কার্যকরভাবে সংরক্ষণ করা সম্ভব হয় না। ইউনিয়নের সাহায্যে বিভিন্ন ধরনের ডেটা সংরক্ষণ করা সম্ভব হলেও একই সময়ে কেবলমাত্র একটি মেম্বার কার্যকরভাবে ডেটা সংরক্ষণ করতে পারে।
ইউনিয়নের ব্যবহার
১. মেমোরি অপটিমাইজেশন: যখন একটি ডেটা টাইপে একসাথে একাধিক ভিন্ন ধরনের মান রাখা প্রয়োজন হয় না, তখন ইউনিয়ন ব্যবহার করে মেমোরি অপটিমাইজ করা যায়। ২. ভিন্ন ধরনের ইনপুট ব্যবস্থাপনা: কোনো ফাংশন বা ডেটা স্ট্রাকচার যেখানে বিভিন্ন ধরনের ডেটা একত্রে সংরক্ষণ করতে হয়, সেখানে ইউনিয়ন ব্যবহার কার্যকর। ৩. মাল্টিপল রেসপন্স ফরম্যাট: যখন কোনো ভেরিয়েবলে বিভিন্ন ফরম্যাটের রেসপন্স থাকতে পারে, সেখানে ইউনিয়ন ব্যবহার করা যেতে পারে।
উদাহরণ: ইউনিয়ন ব্যবহার করে মেমোরি সাশ্রয় করা
ধরা যাক, আমরা একটি Measurement ইউনিয়ন তৈরি করছি, যেখানে ওজন বা উচ্চতা সংরক্ষণ করতে হবে। তবে একসঙ্গে দুটিই সংরক্ষণের প্রয়োজন নেই।
#include <stdio.h>
union Measurement {
int weight; // ওজন সংরক্ষণ
float height; // উচ্চতা সংরক্ষণ
};
int main() {
union Measurement m;
m.weight = 70;
printf("Weight: %d kg\n", m.weight);
m.height = 1.75;
printf("Height: %.2f meters\n", m.height);
return 0;
}
আউটপুট:
Weight: 70 kg
Height: 1.75 meters
বিঃদ্রঃ: এখানে
m.weightসেট করার পর যখনm.heightসেট করা হয়, তখন আগেরm.weightএর মান মুছে যায় কারণ একই মেমোরি লোকেশন শেয়ার করা হচ্ছে।
ইউনিয়নের বৈশিষ্ট্য এবং সীমাবদ্ধতা
| বৈশিষ্ট্য | ব্যাখ্যা |
|---|---|
| মেমোরি শেয়ারিং | ইউনিয়নের সব মেম্বার একই মেমোরি শেয়ার করে, যা মেমোরি অপটিমাইজেশনে সহায়ক |
| একক মেম্বার কার্যকর | একই সময়ে কেবলমাত্র একটি মেম্বার কার্যকর থাকে |
| ডেটা সংরক্ষণ সীমাবদ্ধ | যেহেতু সব মেম্বার একই মেমোরি শেয়ার করে, তাই সব ডেটা একসাথে সংরক্ষণ সম্ভব নয় |
স্ট্রাকচার বনাম ইউনিয়ন
| বৈশিষ্ট্য | স্ট্রাকচার | ইউনিয়ন |
|---|---|---|
| মেমোরি বরাদ্দ | প্রতিটি মেম্বার আলাদা মেমোরি পায় | সব মেম্বার একই মেমোরি শেয়ার করে |
| একাধিক মেম্বার কার্যকর | একসঙ্গে একাধিক মেম্বার কার্যকর থাকে | একসঙ্গে একটি মেম্বার কার্যকর থাকে |
| আকার | স্ট্রাকচারের আকার সব মেম্বারের যোগফল | সবচেয়ে বড় মেম্বারের আকারের সমান |
সংক্ষেপে
- ইউনিয়ন হলো এমন ডেটা টাইপ যা একই মেমোরি স্পেস শেয়ার করে।
- এটি মেমোরি অপটিমাইজেশনে সহায়ক এবং একসঙ্গে একাধিক ডেটা রাখার প্রয়োজন না হলে ব্যবহার করা হয়।
- ইউনিয়নের প্রধান সীমাবদ্ধতা হল, একসঙ্গে একাধিক মেম্বারের মান রাখা সম্ভব নয়।
Read more