ইউনিয়ন (Union) হল একটি ডেটা স্ট্রাকচার যা একাধিক ডেটা টাইপকে একই সময়ে সংরক্ষণ করার সুযোগ দেয়। এটি সাধারণত সি বা সি++ প্রোগ্রামিং ভাষায় ব্যবহৃত হয়। ইউনিয়নের মাধ্যমে বিভিন্ন ডেটা টাইপ একসাথে সংরক্ষণ করা যায়, কিন্তু শুধুমাত্র একটি ডেটা টাইপের মানই একই সময়ে সক্রিয় থাকে। অর্থাৎ, ইউনিয়নটির সদস্যরা একই মেমরি স্পেস ভাগ করে।
ইউনিয়নের কনসেপ্ট
ইউনিয়ন তৈরি করা হয় যাতে একটি ভেরিয়েবল একাধিক ডেটা টাইপ ধারণ করতে পারে, এবং এটি সর্বদা সর্বশেষ ইনিশিয়ালাইজড ভ্যালুকে সংরক্ষণ করে।
সাধারণ সিনট্যাক্স:
union UnionName {
dataType1 member1;
dataType2 member2;
...
};
উদাহরণ
#include <stdio.h>
union Data {
int intValue;
float floatValue;
char charValue;
};
int main() {
union Data data;
data.intValue = 10;
printf("intValue: %d\n", data.intValue); // আউটপুট: 10
data.floatValue = 5.5;
printf("floatValue: %.2f\n", data.floatValue); // আউটপুট: 5.50
printf("intValue after assigning float: %d\n", data.intValue); // আউটপুট: Undefined behavior
data.charValue = 'A';
printf("charValue: %c\n", data.charValue); // আউটপুট: A
printf("intValue after assigning char: %d\n", data.intValue); // আউটপুট: Undefined behavior
return 0;
}
ইউনিয়ন এবং স্ট্রাকচার এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | ইউনিয়ন (Union) | স্ট্রাকচার (Structure) |
|---|---|---|
| মেমরি বরাদ্দ | সব সদস্যদের জন্য একই মেমরি বরাদ্দ করে | প্রতিটি সদস্যের জন্য পৃথক মেমরি বরাদ্দ করে |
| সক্রিয় সদস্য | সর্বদা শুধুমাত্র একটি সদস্য সক্রিয় থাকে | সব সদস্য একই সাথে সক্রিয় থাকে |
| মেমরি আকার | সর্বাধিক সদস্যের আকারের সমান | সব সদস্যের মোট আকারের সমান |
| ব্যবহার | একাধিক ডেটা টাইপ সংরক্ষণের জন্য, তবে একসাথে নয় | একাধিক ডেটা টাইপ সংরক্ষণ এবং অ্যাক্সেস করার জন্য |
উপসংহার
ইউনিয়ন একটি শক্তিশালী ডেটা স্ট্রাকচার যা একই মেমরি স্পেসে একাধিক ডেটা টাইপ ধারণ করার সুযোগ দেয়, তবে এটি শুধুমাত্র একটি টাইপের মানের সক্রিয় থাকার সুবিধা প্রদান করে। এটি প্রোগ্রামিংয়ে স্থান এবং সম্পদ ব্যবহারকে দক্ষ করতে সাহায্য করে। তবে, ইউনিয়ন ব্যবহারের সময় সতর্কতা অবলম্বন করতে হবে, কারণ এটি পূর্ববর্তী মানগুলোকে ওভাররাইট করে, যা প্রায়ই অপ্রত্যাশিত আচরণ সৃষ্টি করতে পারে।