C প্রোগ্রামিং ভাষায় ইউনিয়ন হলো একটি মেমরি লোকেশন যা বিভিন্ন ডেটা টাইপের ভেরিয়েবলগুলো দ্বারা শেয়ার করা হয়।
সিনট্যাক্স
ইউনিয়ন অফ স্ট্রাকচারের সিনট্যাক্স নিচে দেওয়া হলো −
union uniontag{ datatype member 1; datatype member 2; ---- ---- datatype member n; };উদাহরণ
নিচের উদাহরণটি স্ট্রাকচারের ইউনিয়ন ব্যবহারের 모습을 보여준다 −
union sample{ int a; float b; char c; };ইউনিয়ন ভেরিয়েবল ঘোষণা
নিচে ইউনিয়ন ভেরিয়েবল ঘোষণার তিনটি পদ্ধতি দেওয়া হলো −
পদ্ধতি ১
union sample{ int a; float b; char c; }s;পদ্ধতি ২
union{ int a; float b; char c; }s;পদ্ধতি ৩
union sample{ int a; float b; char c; }; union sample s;ইউনিয়ন ঘোষণা করার সময়, কম্পাইলার স্বয়ংক্রিয়ভাবে ইউনিয়নের ভেরিয়েবলগুলিকে ধারণ করতে সবচেয়ে বড় আকারের ভেরিয়েবল টাইপ তৈরি করে।
কোনো সময়ে, শুধুমাত্র একটি ভেরিয়েবলকে রেফার করা যায়।
ইনিশিয়ালাইজেশন এবং অ্যাক্সেস
ইউনিয়ন মেম্বার অ্যাক্সেস করতে স্ট্রাকচারের মতোই সিনট্যাক্স ব্যবহার করা হয়।
ডট অপারেটর (.) মেম্বার অ্যাক্সেসের জন্য ব্যবহৃত হয়।
অ্যারো অপারেটর (->) পয়েন্টার ব্যবহার করে মেম্বার অ্যাক্সেসের জন্য ব্যবহৃত হয়।
নমুনা প্রোগ্রাম ১
নিচের প্রোগ্রামটি স্ট্রাকচারের ইউনিয়ন ব্যবহারের 모습을 보여준다।
union sample{ int a; float b; char c; } main ( ){ union sample s = {10, 20.5, "A"}; printf("a=%d",s.a); printf("b=%f",s.b); printf("c=%c",s.c); }আউটপুট
উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের ফলাফল পাওয়া যায় −
a = গার্বেজ ভ্যালু b = গার্বেজ ভ্যালু c = A
স্ট্রাকচারের ইউনিয়ন
একটি স্ট্রাকচার ইউনিয়নের ভিতরে নেস্টেড থাকতে পারে এবং এটিকে স্ট্রাকচারের ইউনিয়ন বলা হয়।
একটি স্ট্রাকচারের ভিতরে ইউনিয়ন তৈরি করা সম্ভব।
নমুনা প্রোগ্রাম ২
স্ট্রাকচারের ইউনিয়ন ব্যবহারের 모습을 보여주는 আরেকটি C প্রোগ্রাম নিচে দেওয়া হলো −
struct x{ int a; float b; }; union z{ struct x s; }; main ( ){ union z u; u.s.a = 10; u.s.b = 30.5; printf("a=%d", u.s.a); printf("b=%f", u.s.b); }আউটপুট
উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের ফলাফল পাওয়া যায় −
a= 10 b = 30.5