ইউনিয়ন হলো একটি মেমরি লোকেশন যা বিভিন্ন ডেটা টাইপের ভেরিয়েবলগুলো দ্বারা শেয়ার করা হয়।
সিনট্যাক্স
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;ইউনিয়ন ঘোষণা করার সময়, কম্পাইলার স্বয়ংক্রিয়ভাবে ইউনিয়নের ভেরিয়েবলগুলিকে ধারণ করতে সবচেয়ে বড় আকারের ভেরিয়েবল টাইপ তৈরি করে।
কোনো সময়ে শুধুমাত্র একটি ভেরিয়েবলকে রেফার করা যায়।
ইউনিয়ন মেম্বার অ্যাক্সেস করতে স্ট্রাকচারের মতোই সিনট্যাক্স ব্যবহার করা হয়।
ডট অপারেটর (.) মেম্বার অ্যাক্সেসের জন্য ব্যবহৃত হয়।
অ্যারো অপারেটর (->) পয়েন্টার ব্যবহার করে মেম্বার অ্যাক্সেসের জন্য ব্যবহৃত হয়।
আমরা ইউনিয়নে পয়েন্টার रखতে পারি এবং স্ট্রাকচারের মতোই অ্যারো অপারেটর (->) ব্যবহার করে মেম্বার অ্যাক্সেস করতে পারি।
উদাহরণ
নিচের প্রোগ্রামটি C প্রোগ্রামিং-এ ইউনিয়নে পয়েন্টারের ব্যবহার দেখায় −
#includeunion pointer { int num; char a; }; int main(){ union pointer p1; p1.num = 75; // p2 হলো ইউনিয়ন p1-র পয়েন্টার union pointer* p2 = &p1; // পয়েন্টার ব্যবহার করে ইউনিয়ন মেম্বার অ্যাক্সেস printf("%d %c", p2->num, p2->a); return 0; }
আউটপুট
উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের ফলাফল পাওয়া যায় −
75 K
উদাহরণ ২
একই উদাহরণটি ভিন্ন ইনপুট দিয়ে বিবেচনা করুন।
#includeunion pointer { int num; char a; }; int main(){ union pointer p1; p1.num = 90; // p2 হলো ইউনিয়ন p1-র পয়েন্টার union pointer* p2 = &p1; // পয়েন্টার ব্যবহার করে ইউনিয়ন মেম্বার অ্যাক্সেস printf("%d %c", p2->num, p2->a); return 0; }
আউটপুট
উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের ফলাফল পাওয়া যায় −
90 Z