C-তে একই টাইপের ডেটা এবং একাধিক টাইপের ডেটা দুটিরই জন্য কন্টেইনার রয়েছে। একই টাইপের ডেটা সংরক্ষণের জন্য C-তে অ্যারে (Array) কনসেপ্ট আছে যা একই টাইপের ডেটা ভেরিয়েবল সংরক্ষণ করে, আর একাধিক টাইপের ডেটা সংরক্ষণের জন্য স্ট্রাকচার (Structure) এবং ইউনিয়ন (Union) কনসেপ্ট আছে যা ভিন্ন টাইপের ডেটা ভেরিয়েবলও সংরক্ষণ করতে পারে।
স্ট্রাকচার এবং ইউনিয়ন দুটোই ভিন্ন টাইপের ডেটা ধারণ করতে পারে, তবে তাদের আন্তরিক ইমপ্লিমেন্টেশনের ভিত্তিতে উভয় কন্টেইনারে বেশ কিছু পার্থক্য রয়েছে। নিচে স্ট্রাকচার এবং ইউনিয়ন এর মধ্যে গুরুত্বপূর্ণ পার্থক্যগুলো দেওয়া হলো:
স্ট্রাকচার (Structure) এবং ইউনিয়ন (Union) এর মধ্যে পার্থক্য
| ক্রমিক নং | বিষয় | স্ট্রাকচার (Structure) | ইউনিয়ন (Union) |
|---|---|---|---|
| ১ | সংজ্ঞা | স্ট্রাকচার হল C-তে সংজ্ঞায়িত একটি কন্টেইনার যা ভিন্ন টাইপের ডেটা ভেরিয়েবল সংরক্ষণ করে এবং ইউজার-ডিফাইন্ড ভেরিয়েবল সংরক্ষণকেও সাপোর্ট করে। | ইউনিয়নও C-তে একই ধরনের একটি কন্টেইনার যা ভিন্ন টাইপের ভেরিয়েবল ধারণ করতে পারে এবং ইউজার-ডিফাইন্ড ভেরিয়েবলও সাপোর্ট করে। |
| ২ | আন্তরিক ইমপ্লিমেন্টেশন | স্ট্রাকচারে প্রতিটি ইনপুট মেম্বারের জন্য আলাদা মেমোরি লোকেশন অ্যালোকেট করা হয়। | ইউনpteনলে শুধু সবচেয়ে বড় আকারের মেম্বারের জন্য মেমোরি অ্যালোকেট করা হয় এবং একই লোকেশন সব মেম্বারের মধ্যে শেয়ার করা হয়। |
| ৩ | সিনট্যাক্স (Syntax) | C-তে স্ট্রাকচার ডিক্লেয়ার করার সিনট্যাক্স:struct struct_name {
type element1;
type element2;
...
} variable1, variable2, ...;
|
C-তে ইউনিয়ন ডিক্লেয়ার করার সিনট্যাক্স:union u_name {
type element1;
type element2;
...
} variable1, variable2, ...;
|
| ৪ | সাইজ (Size) | স্ট্রাকচার তার মেম্বারদের জন্য শেয়ার্ড লোকেশন ব্যবহার করে না, তাই স্ট্রাকচারের সাইজ সব ডেটা মেম্বারদের সাইজের সমষ্টির সমান বা তার চেয়ে বড় হয়। | ইউনিয়ন তার মেম্বারদের জন্য আলাদা লোকেশন ব্যবহার করে না, তাই এর সাইজ সবচেয়ে বড় মেম্বারের সাইজের সমান হয়। |
| ৫ | ভ্যালু স্টোরেজ (Value Storage) | স্ট্রাকচারে প্রতিটি ইনপুট ডেটা মেম্বারের জন্য নির্দিষ্ট মেমোরি লোকেশন থাকায় এটি একাধিক ভিন্ন মেম্বারদের ভ্যালু একসাথে সংরক্ষণ করতে পারে। | ইউনpteনলে সব ইনপুট ডেটা মেম্বারের জন্য শুধু একটি শেয়ার্ড মেমোরি অ্যালোকেশন থাকায় এটি একবারে শুধু একটি মেম্বারের জন্য সিঙ্গেল ভ্যালু সংরক্ষণ করতে পারে। |
| ৬ | ইনিশিয়ালাইজেশন (Initialization) | স্ট্রাকচারে একাধিক মেম্বার একই সাথে ইনিশিয়ালাইজ করা যায়। | ইউনpteনলে একবারে শুধু প্রথম মেম্বারই ইনিশিয়ালাইজ করা যায়। |
সারসংক্ষেপ: স্ট্রাকচার একাধিক ডেটা একসাথে সংরক্ষণে উপযুক্ত, আর ইউনিয়ন মেমোরি বাঁচাতে এবং একবারে একটি ডেটা হ্যান্ডল করতে উপযুক্ত।