🎯 এই পর্বে যা জানবে:
- ইউনিয়ন কী
- স্ট্রাকচার ও ইউনিয়নের পার্থক্য
- ইউনিয়ন ঘোষণা ও ব্যবহার
- মেমোরি ব্যবস্থাপনা
- উদাহরণসহ ব্যাখ্যা
- ইউনিয়নের সুবিধা ও সীমাবদ্ধতা
🧩 ইউনিয়ন কী?
ইউনিয়ন (Union) হলো এক ধরনের user-defined data type যা একাধিক ডেটা মেম্বার ধারণ করতে পারে, কিন্তু এক সময়ে শুধু একটি মেম্বারই মান ধরে রাখতে পারে।
👉 সহজভাবে বললে —
ইউনিয়ন এমন একটি ডেটা টাইপ যেখানে সব মেম্বার একই মেমোরি শেয়ার করে।
অর্থাৎ, স্ট্রাকচারের মতো হলেও ইউনিয়নের প্রধান পার্থক্য হলো একাধিক মেম্বারের জন্য আলাদা আলাদা মেমোরি বরাদ্দ হয় না, বরং একটি কমন মেমোরি স্পেস ব্যবহার করা হয়।
💡 কেন ইউনিয়ন ব্যবহার করা হয়?
যখন কোনো ভেরিয়েবল একই মেমোরি স্থান ব্যবহার করে বিভিন্ন ধরণের মান ধারণ করতে পারে, তখন মেমোরি বাঁচানোর জন্য ইউনিয়ন ব্যবহার করা হয়।
বিশেষ করে embedded systems বা low memory devices এ ইউনিয়ন খুব কার্যকর।
🧮 ইউনিয়ন ঘোষণা (Union Declaration)
union Data {
int i;
float f;
char str[20];
};এখানে Data নামের ইউনিয়নে তিনটি মেম্বার আছে:
i→ integerf→ floatstr→ string
⚙️ ইউনিয়ন ভেরিয়েবল তৈরি
union Data d1;এছাড়াও একসাথে ইনিশিয়ালাইজ করা যায় 👇
union Data d1 = {100};🧭 ইউনিয়ন মেম্বার অ্যাক্সেস (Accessing Members)
ডট (.) অপারেটর দিয়ে মেম্বার অ্যাক্সেস করা হয়।
#include <stdio.h>
#include <string.h>
union Data {
int i;
float f;
char str[20];
};
int main() {
union Data data;
data.i = 10;
printf("Integer: %d\n", data.i);
data.f = 220.5;
printf("Float: %.2f\n", data.f);
strcpy(data.str, "Hello");
printf("String: %s\n", data.str);
return 0;
}🧠 আউটপুট বিশ্লেষণ
উপরের প্রোগ্রামের আউটপুট হতে পারে 👇
Integer: 10
Float: 220.50
String: Helloতবে লক্ষ্য করো, শেষে শুধু str সঠিকভাবে প্রদর্শিত হবে।
কারণ data.f ও data.i এর মান data.str লেখার পর ওভাররাইট হয়ে গেছে।
👉 এটি ঘটে কারণ সব মেম্বার একই মেমোরি স্পেস শেয়ার করে।
🔍 মেমোরি ব্যবহারের ধারণা
union Data {
int i;
float f;
char str[20];
};এখানে মেমোরি বরাদ্দ হবে সবচেয়ে বড় মেম্বারের আকার অনুযায়ী।
যেহেতু str[20] সবচেয়ে বড় (২০ বাইট), তাই পুরো ইউনিয়নের সাইজ হবে ২০ বাইট।
🧮 sizeof() দিয়ে পরীক্ষা
#include <stdio.h>
union Data {
int i;
float f;
char str[20];
};
int main() {
printf("ইউনিয়নের সাইজ: %lu bytes\n", sizeof(union Data));
return 0;
}আউটপুট:
ইউনিয়নের সাইজ: 20 bytes🆚 স্ট্রাকচার ও ইউনিয়নের পার্থক্য
| বিষয় | Structure | Union |
|---|---|---|
| মেমোরি বরাদ্দ | প্রতিটি মেম্বারের জন্য আলাদা | সব মেম্বার এক মেমোরি শেয়ার করে |
| একাধিক মান একসাথে রাখা | সম্ভব | অসম্ভব |
| মোট সাইজ | সব মেম্বারের যোগফল | সবচেয়ে বড় মেম্বারের সাইজ |
| ব্যবহার | একাধিক তথ্য একসাথে রাখতে | মেমোরি সাশ্রয় করতে |
🧱 ইউনিয়ন উদাহরণ: বিভিন্ন ডেটা একত্রে রাখা
#include <stdio.h>
#include <string.h>
union Info {
int id;
char name[20];
float salary;
};
int main() {
union Info emp;
emp.id = 101;
printf("Employee ID: %d\n", emp.id);
strcpy(emp.name, "Sadia");
printf("Employee Name: %s\n", emp.name);
emp.salary = 45000.50;
printf("Employee Salary: %.2f\n", emp.salary);
return 0;
}👉 এখানে শেষে শুধু salary সঠিকভাবে দেখাবে, বাকিগুলো ওভাররাইট হবে।
🧠 ইউনিয়নের সুবিধা
✅ মেমোরি সাশ্রয় হয়
✅ একাধিক ডেটা টাইপ একই স্থানে রাখা যায়
✅ হার্ডওয়্যার বা নেটওয়ার্ক প্রোগ্রামিংয়ে কার্যকর
⚠️ সীমাবদ্ধতা
❌ এক সময়ে একটাই মান সংরক্ষণ করা যায়
❌ ভুলভাবে ব্যবহার করলে ডেটা হারিয়ে যেতে পারে
✅ মেমোরি শেয়ার করার ধারণা ভালোভাবে বুঝে ব্যবহার করা জরুরি
✨ সংক্ষেপে
- ইউনিয়ন একই মেমোরি স্পেসে বিভিন্ন ডেটা রাখতে দেয়
- একসাথে একটাই মান রাখা যায়
- স্ট্রাকচারের তুলনায় কম মেমোরি লাগে
- Embedded systems এ ইউনিয়ন খুব জনপ্রিয়



