কাঠামো এবং ইউনিয়নের মধ্যে পার্থক্য

লেখক: Laura McKinney
সৃষ্টির তারিখ: 1 এপ্রিল 2021
আপডেটের তারিখ: 9 মে 2024
Anonim
থানা ও উপজেলার মধ্যে পার্থক্য কী ।।জানা-অজানা পর্ব ৫৯।।
ভিডিও: থানা ও উপজেলার মধ্যে পার্থক্য কী ।।জানা-অজানা পর্ব ৫৯।।

কন্টেন্ট


সি ++ কাস্টম ডেটা তৈরির জন্য সি ভাষা প্রদত্ত পাঁচটি উপায়ের অনুমতি দেয়। এই পাঁচটি উপায় হ'ল 'কাঠামো', 'বিট-ফিল্ড', 'ইউনিয়ন', 'গণনা', 'টাইপিডেফ'। নীচের নিবন্ধে আমরা গঠন এবং ইউনিয়নের মধ্যে পার্থক্য অধ্যয়ন করতে যাচ্ছি। কাঠামো এবং ইউনিয়ন উভয়ই ধারক ডেটা ধরণের যা কোনও "টাইপ" এর ডেটা ধরে রাখতে পারে। কাঠামো এবং ইউনিয়নকে আলাদা করার মধ্যে একটি প্রধান পার্থক্য হ'ল কাঠামোর প্রতিটি সদস্যের জন্য পৃথক মেমরি অবস্থান রয়েছে যেখানে ইউনিয়নের সদস্যরা একই মেমরির অবস্থান ভাগ করে নেন।

আসুন একটি তুলনামূলক চার্ট সহ কাঠামো এবং ইউনিয়নের পার্থক্যটি বুঝতে পারি।

  1. তুলনা রেখাচিত্র
  2. সংজ্ঞা
  3. মূল পার্থক্য
  4. মিল
  5. উপসংহার

তুলনা রেখাচিত্র

তুলনার ভিত্তিগঠনমিলন
মৌলিককাঠামোর প্রতিটি সদস্যকে পৃথক মেমরি অবস্থান বরাদ্দ করা হয়।ইউনিয়নের সমস্ত সদস্য একই মেমরি অবস্থান ভাগ করে নেয়।
ঘোষণাকাঠামো কাঠামোর নাম {
টাইপ এলিমেন্ট 1;
টাইপ এলিমেন্ট 2;
.
.
} ভেরিয়েবল 1, ভেরিয়েবল 2, ...;
ইউনিয়ন u_name {
টাইপ এলিমেন্ট 1;
টাইপ এলিমেন্ট 2;
.
.
} ভেরিয়েবল 1, ভেরিয়েবল 2, ...;
শব্দstruct হয়মিলন
আয়তনকাঠামোর আকার = সমস্ত ডেটা সদস্যের আকারের সমষ্টি।ইউনিয়নের আকার = বৃহত্তম সদস্যের আকার।
স্টোরের মানসমস্ত সদস্যের জন্য স্বতন্ত্র মান সংরক্ষণ করে।সমস্ত সদস্যের জন্য একই মান সঞ্চয় করে।
একেবারেকাঠামো কাঠামোর বিভিন্ন সদস্যের একাধিক মান সংরক্ষণ করে।একটি ইউনিয়ন সকল সদস্যের জন্য এক সময়ে একক মান সংরক্ষণ করে।
দেখার উপায়প্রতিটি মেমরি অবস্থান দেখতে একক উপায় প্রদান।একই মেমরি অবস্থান দেখতে একাধিক উপায় সরবরাহ করুন।
নামবিহীন বৈশিষ্ট্যকোনও নামবিহীন বৈশিষ্ট্য নেই।বেনামে ইউনিয়ন ঘোষণা করা যেতে পারে।

কাঠামোর সংজ্ঞা

কাঠামোটি বিভিন্ন ডেটা ধরণের ভেরিয়েবলের সংগ্রহ যা সাধারণ নাম দ্বারা উল্লেখ করা হয়। কাঠামোর ভেরিয়েবলগুলিকে "সদস্য" বলা হয়। ডিফল্টরূপে, কাঠামোর সমস্ত সদস্যই "সর্বজনীন" are আপনি যখন কোনও কাঠামো ঘোষণা করেন, আপনি একটি টেম্পলেট তৈরি করেন, যা কাঠামোগত অবজেক্ট তৈরি করতে ব্যবহার করা যেতে পারে, ডেটা সদস্য এবং সদস্য ফাংশনগুলির একই সংস্থাকে ভাগ করে নেওয়া। কাঠামোটির ঘোষণাটি সর্বদা আগে "স্ট্রাক্ট" কীওয়ার্ড দ্বারা থাকে, যা সংকলককে বলে যে একটি কাঠামো ঘোষিত হয়েছে। আসুন একটি উদাহরণ নেওয়া যাক।


আসুন একটি উদাহরণ নেওয়া যাক।

কাঠামোগত কর্মচারী {স্ট্রিং নাম; স্ট্রিং কোম্পানী_নাম; স্ট্রিং সিটি; } Emp1, emp2;

এখানে, আমরা কর্মীদের তথ্য সংরক্ষণের জন্য একটি কাঠামো ঘোষণা করি। ঘোষণাটি একটি সেমিকোলন দ্বারা সমাপ্ত করা হয়, কারণ কাঠামো ঘোষণাটি একটি বিবৃতি এবং সি ++ এ বিবৃতিটি অর্ধপরিমাণ দ্বারা সমাপ্ত হয়।

কাঠামোর দেওয়া নামটি একটি "প্রকার" সংজ্ঞায়িত করে (উপরে উদাহরণস্বরূপ কাঠামোর নাম "কর্মচারী")। এই ধরণের ভেরিয়েবলগুলি তৈরি করা যেতে পারে, উপরের মতো, আমরা দুটি ভেরিয়েবল "এমপ 1" এবং "এমপ 2" টাইপের "কর্মচারী" তৈরি করেছি। উপরের উদাহরণে, আমরা ঘোষণার ঠিক পরে একটি ‘কাঠামো’ পরিবর্তনশীল তৈরি করেছি; পর্যায়ক্রমে, এটি আলাদাভাবে তৈরি করা যেতে পারে।

কাঠামোগত কর্মচারী এম 1, এম 2; // কীওয়ার্ড স্ট্রাক্ট বাধ্যতামূলক নয়।

কাঠামো ভেরিয়েবলের সদস্যদের সূচনা করা যেতে পারে বা বিন্দু (।) অপারেটরটি ব্যবহার করে অ্যাক্সেস করা যায়।

emp1.name "অশোক" =;

এক কাঠামোর ভেরিয়েবলের মধ্যে থাকা তথ্যগুলি একই ধরণের অন্য কাঠামো ভেরিয়েবলকে অনুসরণ হিসাবে নির্ধারিত করা যেতে পারে।


emp1.name "অশোক" =; emp1.company_name = "টেকপিক্স"; emp1.city = "দিল্লি"; emp2 = emp1; // এম 2 এর এমপ 2 এর সদস্যের মান নির্ধারণ করা। cout <

এখানে, আমরা কাঠামো ভেরিয়েবল ‘এম 1’ assignedকে ‘এমপ 2 ′ সুতরাং,’ এমপ 1 assigned এর সদস্যদের সমস্ত মান ‘এপিএম 2’ এর সংশ্লিষ্ট সদস্যের কাছে অনুলিপি করেছি।

স্ট্রাকচার ভেরিয়েবলের সদস্যটিকে ফাংশনে পাস করা যেতে পারে।

funct (emp1.city);

উভয় পদ্ধতি দ্বারা মান দ্বারা কল এবং রেফারেন্সের মাধ্যমে কল করে পুরো স্ট্রাকচার ভেরিয়েবলটি ফাংশনে পৌঁছে দেওয়া যেতে পারে।

funt (emp1); // মান পদ্ধতিতে কল কল কল। । । অকার্যকর ফান্ট (স্ট্রাকচারী কর্মচারী এমপি) {// এম 1 এর সদস্যদের মান গ্রহণ করা। cout <

এখানে, কাঠামোর ভেরিয়েবলের কোনও সদস্যের মানের পরিবর্তন ফাংশনের বাইরে প্রতিফলিত হবে না কারণ ভেরিয়েবলটি মান পদ্ধতিতে কল দ্বারা পাস করা হয়। এখন রেফারেন্স পদ্ধতিতে কল করে একই জিনিসটি করা যাক।

funt (& emp1); // রেফারেন্স পদ্ধতিতে কল কল কল। । । অকার্যকর ফান্ট (স্ট্রাক কর্মচারী * এমপি) {// এমপি 1 এর ঠিকানা প্রাপ্তি। emp-> শহর = "নূর"; // কাঠামো পরিবর্তনশীল এম 1 এর সদস্য (শহর) এর মান পরিবর্তন করুন। । }

এখানে স্ট্রাকচার ভেরিয়েবল রেফারেন্স দিয়ে পাস হয়েছে সুতরাং স্ট্রাকচার ভেরিয়েবলের মেম্বরের মান পরিবর্তন করে ফাংশনের বাইরেও প্রতিফলিত হয়।

srtct কর্মচারী * এমপি; // টাইপ কর্মচারীর স্ট্রাকচার পয়েন্টারটি ডিক্যালারিং। EMP = & emp1; // পয়েন্টারটিতে এম 1 এর ঠিকানা বরাদ্দ করা। এমপি-> শহর // পয়েন্টার এমপ 1 এর সদস্য শহর অ্যাক্সেস করে।

কাঠামোর পয়েন্টারটিও তৈরি করা যেতে পারে; এটি স্ট্রাকচার ভেরিয়েবলের ঠিকানা রাখে।

কাঠামোতে সামগ্রিক সূচনাটি অনুমোদিত হয় যখন কাঠামোর সংজ্ঞা থাকে না, কোনও ব্যবহারকারীর সংজ্ঞায়িত কনস্ট্রাক্টর বা ভার্চুয়াল ফাংশন বা বেস শ্রেণি বা ব্যক্তিগত বা সুরক্ষিত ক্ষেত্র থাকে।

int main () {ep epm3 = {"অনিল", "টেকপিক্স", "নুর"}; } // কর্মচারী কাঠামো হিসাবে সম্ভাব্য উপরোক্ত বিষয়গুলির মধ্যে কোনওটি নেই।

ইউনিয়নের সংজ্ঞা

একটি ইউনিয়ন একটি মেমরি অবস্থান যা একক ইউনিয়নের ধরণের অধীনে ঘোষিত দুটি বা আরও বেশি ধরণের ভেরিয়েবল দ্বারা ভাগ করা হয়। ইউনিয়ন ঘোষণার জন্য ব্যবহৃত কীওয়ার্ডটি হ'ল "ইউনিয়ন"। সি ++ এ কোনও ইউনিয়নে সদস্য ফাংশন এবং ভেরিয়েবল উভয়ই থাকতে পারে। ডিফল্টরূপে, ইউনিয়নের সমস্ত সদস্য "পাবলিক"। "ইউনিয়ন" ঘোষণা কাঠামো ঘোষণার অনুরূপ।

ইউনিয়ন u_type {int x, চর গ; ভাসা চ; } u1, u2;

এখানে আমরা ইউ_ টাইপ নামে একটি ইউনিয়ন ঘোষণা করেছি। ইউ_ টাইপের সদস্যরা পূর্ণসংখ্যার ধরণের ‘x’, চরিত্রের ধরণের ‘সি’ এবং ভাসমান ধরণের ‘চ’ are আমরা ইউনিয়ন ঘোষণার ঠিক পরে, "u_type" টাইপের ইউনিয়ন ভেরিয়েবলগুলি 'u1' এবং 'u2'ও তৈরি করেছিলাম। আমরা ইউনিয়ন ঘোষণার থেকে পৃথকভাবে ইউনিয়ন পরিবর্তনশীলও ঘোষণা করতে পারি।

int main () {ইউনিয়ন u_type u1, u2; // সি ++ তে কীওয়ার্ড ইউনিয়ন বাধ্যতামূলক নয়। }

ইউনিয়নের সদস্যদের অ্যাক্সেস ডট (।) অপারেটর ব্যবহার করে ইউনিয়ন ভেরিয়েবলের আগে এবং সেই ভেরিয়েবলের সদস্য অনুসরণ করে করা যেতে পারে।

u1.x = 10;

কাঠামোর মতো, একটি ইউনিয়নে সমষ্টিগত সূচনা সম্ভব নয়। যেহেতু আমরা জানি ইউনিয়নটি তার সদস্যদের সকলের জন্য একই মেমরির অবস্থান ভাগ করে নেয় কেবলমাত্র একবারে একটি ভেরিয়েবল আরম্ভ হয় এবং সমস্ত ভেরিয়েবল স্বয়ংক্রিয়ভাবে প্রাথমিক মানের সাথে আপডেট হয়।

u1.x = 10; cout <

যদি আপনি ‘u1’ এর যে কোনও সদস্যের মান পরিবর্তন করার চেষ্টা করেন। অন্য সদস্যটি স্বয়ংক্রিয়ভাবে সেই মানটিতে আপডেট হবে।

u1.c = 65; cout <

ইউনিয়নকে বরাদ্দ করা স্থানটি ইউনিয়নের বৃহত্তম সদস্যের আকারের সমান। ‘চর’ এ বরাদ্দ করা বাইট যেমন 1 বাইট, ‘ইনট’ 4 বাইট এবং ‘ফ্লোট’ 4 বাইট তাই, বৃহত্তম আকার 4 বাইট। সুতরাং, ‘u1’ এবং ‘u2’ এ বরাদ্দ করা মেমরিটি 4 বাইট।

int main () {int আকার_1 = আকারের (u1); // 4 ইনট আকার 2 = আকারের (u2); // 4

ইউনিয়নের পয়েন্টারটি কাঠামোর মতো তৈরি করা যেতে পারে। পয়েন্টারটি ইউনিয়নের ঠিকানা ধারণ করে।

ইউনিয়ন u_type * আন; উন = & u1; cout <এক্স; // 10

কাঠামোর মতো ইউনিয়নটি উভয় পদ্ধতি দ্বারা ফাংশনে স্থান দেওয়া যেতে পারে অর্থ হিসাবে কল এবং রেফারেন্সের মাধ্যমে কল।

funct (u1); // মান পদ্ধতিতে কল কল কল। । । অকার্যকর ফান্ট (ইউনিয়ন u_type আন) {// u1 সদস্যের মান গ্রহণ করা। cout <

এখন, রেফারেন্স পদ্ধতিতে কল ব্যবহার করে ফাংশনটি কল করি।

funct (& u1); // রিফ্রেন্স পদ্ধতিতে কল কল কল। । । অকার্যকর ফান্ট (ইউনিয়ন u_type আন) {// u1 এর ঠিকানা গ্রহণ করা। আন-> এক্স = 20। }

অজ্ঞাতনামা ইউনিয়ন নামে সি ++ তে একটি বিশেষ ধরণের ইউনিয়ন রয়েছে। বেনামে ইউনিয়নে প্রকারের নাম থাকতে পারে এবং এই জাতীয় ইউনিয়নের কোনও পরিবর্তনশীল তৈরি করা যায় না। কেবলমাত্র সংকলককে তা জানাতে হবে যে এর সদস্য ভেরিয়েবলগুলি একই অবস্থান ভাগ করে নেওয়ার জন্য। বেনামে ইউনিয়নের পরিবর্তনশীল সাধারণ ডট (।) অপারেটর ছাড়াই উল্লেখ করা যেতে পারে।

int main () {ইউনিয়ন {// প্রকারের নাম সহ বেনামে ইউনিয়ন সংজ্ঞায়িত করুন। int x, চর গ; ভাসা চ; }; এক্স = 10; // আউট ডট অপারেটর cout সঙ্গে ইউনিয়ন পরিবর্তনশীল <রেফার্ড

বেনামে ইউনিয়নে কোনও সদস্যের কাজ করার অনুমতি নেই, এতে ব্যক্তিগত বা সুরক্ষিত ডেটা থাকতে পারে না এবং বৈশ্বিক বেনামে ইউনিয়নকে অবশ্যই ‘স্থির’ হিসাবে নির্দিষ্ট করতে হবে specified

সাধারণ ইউনিয়ন ঘোষণার জন্য পয়েন্টগুলি মনে রাখার জন্য।

  • ইউনিয়নের সংজ্ঞাতে কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরও থাকতে পারে।
  • ইউনিয়ন একই মেমরি অবস্থান দেখার একাধিক উপায় সরবরাহ করে।
  • ইউনিয়ন কোনও ধরণের শ্রেণির উত্তরাধিকারী হতে পারে না।
  • ইউনিয়ন বেস ক্লাস হতে পারে না।
  • ইউনিয়নের ভার্চুয়াল সদস্য ফাংশন থাকতে পারে না।
  • ইউনিয়ন একটি স্থির পরিবর্তনশীল না থাকতে পারে।
  1. স্ট্রাকচার বিভিন্ন সদস্যের জন্য বিভিন্ন মেমরি অবস্থান ব্যবহার করে। সুতরাং, স্বতন্ত্র মানটি সকল সদস্যকে বরাদ্দ করা যেতে পারে। তবে, ইউনিয়ন সমস্ত সদস্যকে একই মেমরি অবস্থান বরাদ্দ করে। সুতরাং, সমস্ত সদস্যকে একটি একক মান বরাদ্দ করা যেতে পারে।
  2. কাঠামোর সব সদস্যের জন্য আলাদা মেমরি অবস্থান রয়েছে; অতএব, এটি একসাথে একাধিক মান ধারণ করতে পারে এবং আমরা জানি যে ইউনিয়ন সমস্ত সদস্যের জন্য একই মেমরি অবস্থান ভাগ করে, এটি এক সময়ে একক মান সংরক্ষণ করতে পারে।
  3. সাধারণত কাঠামোর মোট আকার ইউনিয়নের মোট আকারের চেয়ে বড় হয় কারণ একটি কাঠামোর আকার কাঠামোর সমস্ত সদস্যের আকারের যোগফল এবং ইউনিয়নের আকারের সদস্যের আকার বৃহত্তম টাইপ
  4. কাঠামো প্রতিটি অবস্থানের একক ভিউ সরবরাহ করে যেখানে ইউনিয়ন একটি একক অবস্থানের একাধিক ভিউ সরবরাহ করে।
  5. আপনি একটি বেনামী ইউনিয়ন ঘোষণা করতে পারেন তবে একটি বেনামি কাঠামো নয়।

মিল:

  • কাঠামো এবং ইউনিয়ন উভয়েরই নিজেকে ঘোষণা করার একই পদ্ধতি রয়েছে, ভেরিয়েবল তৈরি করা যায় এবং ভেরিয়েবলের সদস্যদের অ্যাক্সেস করার একই পদ্ধতি।
  • স্ট্রাকচার এবং ইউনিয়ন উভয় পদ্ধতিতে একটি ফাংশনে পাস করা যেতে পারে মূল্য দ্বারা কল এবং রেফারেন্সের মাধ্যমে কল।
  • কাঠামো এবং ইউনিয়ন উভয়ই ধারক ডেটা টাইপ এবং তাদের সদস্য হিসাবে অন্যান্য কাঠামো, ইউনিয়ন, অ্যারে সহ কোনও ডেটা টাইপের একটি অবজেক্ট থাকে।

উপসংহার:

কাঠামো এবং ইউনিয়ন উভয়ই ধারক ডেটাটাইপ যা বিভিন্ন ধরণের সদস্য থাকে। স্ট্রাকচারগুলি ব্যবহার করা হয় যখন আমাদের সমস্ত সদস্যের জন্য একটি স্বতন্ত্র মেমরির স্থানে আলাদা মান সংরক্ষণ করতে হয়। টাইপ রূপান্তর প্রয়োজন হলে ইউনিয়নগুলি ব্যবহৃত হয়।