স্ট্রাকচার (Structure) vs ইউনিয়ন (Union) - তুলনাত্মক আলোচনা
| বিষয় | স্ট্রাকচার (struct) | ইউনিয়ন (union) |
| সংজ্ঞা |
বিভিন্ন ডেটা টাইপের আইটেমগুলোর সমষ্টি, একক নামের অধীনে গ্রুপ করা। |
একই মেমরি লোকেশন শেয়ার করে বিভিন্ন ডেটা টাইপের ভেরিয়েবল। |
| কীওয়ার্ড |
struct |
union |
| সিনট্যাক্স |
struct tag {
type member1;
type member2;
}; |
union tag {
type member1;
type member2;
}; |
| মেমরি অ্যালোকেশন |
সকল মেম্বারের সাইজের যোগফল। প্রতিটি মেম্বারের আলাদা মেমরি। |
সর্বোচ্চ মেম্বারের সাইজ। একবারে শুধু একটি মেম্বার থাকে। |
| এক্সেস |
সকল মেম্বার একসাথে এক্সেসযোগ্য। |
একবারে একটি মেম্বার এক্সেসযোগ্য। |
| ব্যবহার |
রিলেটেড ডেটা গ্রুপ করার জন্য। |
মেমরি বাঁচাতে / টাইপ-পানিং (type-punning) জন্য। |
মেমরি তুলনা উদাহরণ
struct Size {
double a; // 8 bytes
int b; // 4 bytes
char c; // 1 byte
float d; // 4 bytes
}; // Total = 24 bytes (padding সহ)
union Size {
double a; // 8 bytes
int b; // 4 bytes
char c; // 1 byte
float d; // 4 bytes
}; // Total = 8 bytes (সর্বোচ্চ = double)
সি প্রোগ্রাম: স্ট্রাকচার সাইজ
#include <stdio.h>
struct size {
double a;
int b;
char c;
float d;
};
int main() {
printf("Structure size = %zu bytes\n", sizeof(struct size));
return 0;
}
আউটপুট: 24
সি প্রোগ্রাম: ইউনিয়ন সাইজ
#include <stdio.h>
union size {
double a;
int b;
char c;
float d;
};
int main() {
printf("Union size = %zu bytes\n", sizeof(union size));
return 0;
}
আউটপুট: 8
সারসংক্ষেপ
- স্ট্রাকচার: সব মেম্বারের জন্য আলাদা মেমরি → বড় সাইজ, সব ডেটা একসাথে উপলব্ধ।
- ইউনিয়ন: শেয়ারড মেমরি → ছোট সাইজ, একবারে একটি ডেটা।