সি প্রোগ্রামিং এর একটি গুরুত্বপূর্ণ টপিক Union

আপনাদের সবাইকে স্বাগতম আমাদের সাইটে। আজ আমরা এখানে সি প্রোগ্রামিং এর একটি গুরুত্বপূর্ণ চ্যাপ্টার আলোচনা করব, তার নাম হলো Union। আপনাদের আগেই বলেছি সি প্রোগ্রামিং শিখতে হলে আপনাকে কিছুটা হলেও ইংরেজী শিখতে হবে।
একটি ইউনিয়ন এর সাহায্যে আপনি একই মেমরির স্থানে বিভিন্ন ধরনের তথ্য সংরক্ষণ করতে সক্ষম হবেন যা সি তে পাওয়া যায় একটি বিশেষ ডাটা টাইপ হিসেবে। আপনি অনেক সদস্যদের সঙ্গে একটি ইউনিয়ন নির্ধারণ করতে পারবেন, কিন্তু শুধুমাত্র এক সদস্য যে কোনো সময় একটি মান থাকতে পারে. ইউনিয়ন মাল্টি উদ্দেশ্যর জন্য একই মেমরি অবস্থান ব্যবহার করে একটি কার্যকর উপায় প্রদান।
Defining a Union
এখানে Union এর সঙ্গা প্রদান করা হচ্ছেঃ
কাঠামো নির্ধারণ করার সময় হিসাবে আপনি কি একটি ইউনিয়ন নির্ধারণ করার জন্য, আপনি খুব অনুরূপ ইউনিয়ন বিবৃতি ব্যবহার করা আবশ্যক ছিল। ইউনিয়ন বিবৃতিতে আপনার প্রোগ্রামের জন্য একাধিক সদস্য, একটি নতুন ডাটা টাইপ সংজ্ঞায়িত করে। নিম্নরূপ ইউনিয়ন বিবৃতি বিন্যাস হল:
union [union tag]
{
member definition;
member definition;
...
member definition;
} [one or more union variables];

ইউনিয়ন ট্যাগ ঐচ্ছিক এবং প্রতিটি সদস্য সংজ্ঞা যেমন আমি কোন int হিসাবে একটি স্বাভাবিক পরিবর্তনশীল সংজ্ঞা, হয়; অথবা চ ভাসমান; বা অন্য কোন বৈধ পরিবর্তনশীল সংজ্ঞা. ইউনিয়ন এর সংজ্ঞা শেষে, চূড়ান্ত সেমিকোলন আগে, আপনি এক বা একাধিক ইউনিয়ন ভেরিয়েবল উল্লেখ করতে পারেন কিন্তু এটা ঐচ্ছিক. এখানে আপনি তিন সদস্য হয়েছে, যা ডেটা নামে একটি ইউনিয়ন টাইপ সংজ্ঞায়িত করবে উপায় i, f, and str:
union Data
{
int i;
float f;
char str[20];
} data;

এখন, ডাটা টাইপ একটি পরিবর্তনশীল একটি পূর্ণসংখ্যা, একটি ফ্লোটিং পয়েন্ট নম্বর, বা অক্ষরের একটি স্ট্রিং সঞ্চয় করতে পারেন. এই একটি পরিবর্তনশীল অর্থাৎ এর মানে হল যে। একই মেমরি অবস্থান তথ্য একাধিক ধরনের সংরক্ষণ করা যেতে পারে. আপনি আপনার প্রয়োজন উপর ভিত্তি করে একটি ইউনিয়ন ভিতরে কোনো বিল্ট ইন বা ব্যবহারকারী নির্ধারিত ধরনের তথ্য ব্যবহার করতে পারেন।

একটি ইউনিয়ন দ্বারা দখল মেমরি ইউনিয়নের বৃহত্তম সদস্য রাখা যথেষ্ট বড় হতে হবে. এই পংক্তি দ্বারা দখল করা যায়, যা সর্বোচ্চ স্থান, কারণ উদাহরণস্বরূপ, উপরোক্ত উদাহরণ তথ্য টাইপ মেমরি স্পেস 20 বাইট ব্যাপৃত হবে. নিম্নলিখিত উপরে ইউনিয়ন দখল করে মোট মেমরির মাপ প্রদর্শন করা হবে যা উদাহরণ:

#include <stdio.h>
#include <string.h>

union Data
{
int i;
float f;
char str[20];
};

int main( )
{
union Data data;

printf( "Memory size occupied by data : %d\n", sizeof(data));

return 0;
}

উপরের কোড কম্পাইল এবং মৃত্যুদন্ড কার্যকর করা হয়, এটি নিম্নলিখিত ফলাফল সৃষ্টি করে:
Memory size occupied by data : 20
Accessing Union Members
একটি ইউনিয়নের কোন সদস্য অ্যাক্সেস করার জন্য, আমরা সদস্য এক্সেস অপারেটর ব্যবহার (.). সদস্য এক্সেস অপারেটর ইউনিয়ন পরিবর্তনশীল নাম এবং আমরা অ্যাক্সেস করতে চান যে ইউনিয়ন সদস্য মধ্যে একটি নির্দিষ্ট সময়ের হিসাবে কোডেড হয়. আপনি ইউনিয়ন ধরনের ভেরিয়েবল সংজ্ঞায়িত করতে ইউনিয়ন শব্দ ব্যবহার করতে হবে. ইউনিয়নের ব্যবহার ব্যাখ্যা উদাহরণ অনুসরণ করা হয়:
#include <stdio.h>
#include <string.h>

union Data
{
int i;
float f;
char str[20];
};

int main( )
{
union Data data;

data.i = 10;
data.f = 220.5;
strcpy( data.str, "C Programming");

printf( "data.i : %d\n", data.i);
printf( "data.f : %f\n", data.f);
printf( "data.str : %s\n", data.str);

return 0;
}

উপরের কোড কম্পাইল এবং মৃত্যুদন্ড কার্যকর করা হয়, এটি নিম্নলিখিত ফলাফল সৃষ্টি করে:
data.i : 1917853763
data.f : 4122360580327794860452759994368.000000
data.str : C Programming
এখানে, আমরা পরিবর্তনশীল নির্ধারিত চূড়ান্ত মান মেমোরি দখল করেছে, কারণ আমি ও ইউনিয়ন চ সদস্যদের মান ক্ষতিগ্রস্ত হবে যে দেখতে পারেন এবং এই মান Str সদস্য খুব ভাল মুদ্রিত হচ্ছে যে যদি কারণ। এখন আমরা হচ্ছে ইউনিয়নের প্রধান উদ্দেশ্য, যা একটি সময়ে এক পরিবর্তনশীল ব্যবহার করতে হবে যেখানে এর আবার একই উদাহরণ দেখব:
#include <stdio.h>
#include <string.h>

union Data
{
int i;
float f;
char str[20];
};

int main( )
{
union Data data;

data.i = 10;
printf( "data.i : %d\n", data.i);

data.f = 220.5;
printf( "data.f : %f\n", data.f);

strcpy( data.str, "C Programming");
printf( "data.str : %s\n", data.str);

return 0;
}

উপরের কোড কম্পাইল এবং মৃত্যুদন্ড কার্যকর করা হয়, এটি নিম্নলিখিত ফলাফল সৃষ্টি করে:
data.i : 10
data.f : 220.500000
data.str : C Programming

এখানে, সব সদস্যদের খুব ভাল এক সদস্য একটি সময়ে ব্যবহার করা হচ্ছে, কারণ মুদ্রিত হচ্ছে।

Permanent link to this article: http://bangla.sitestree.com/%e0%a6%b8%e0%a6%bf-%e0%a6%aa%e0%a7%8d%e0%a6%b0%e0%a7%8b%e0%a6%97%e0%a7%8d%e0%a6%b0%e0%a6%be%e0%a6%ae%e0%a6%bf%e0%a6%82-%e0%a6%8f%e0%a6%b0-%e0%a6%8f%e0%a6%95%e0%a6%9f%e0%a6%bf-%e0%a6%97%e0%a7%81/