উত্তর:
এটি আপনাকে মান দ্বারা অ্যারে পাস করার অনুমতি দেয় বা কোনও ফাংশন থেকে মান দ্বারা এটি ফেরত পেতে দেয়।
স্ট্রাক্ট মান দ্বারা পাস করা যেতে পারে, অ্যারে থেকে পৃথক যা এই প্রসঙ্গে একটি পয়েন্টারের ক্ষয় হয়।
আরেকটি সুবিধা হ'ল এটি আকারটিকে বিমূর্ত করে তোলে যাতে আপনি [MAX]
যেখানেই এই জাতীয় কোনও বিষয় ঘোষণা করেন সেখানে আপনার সমস্ত কোড ব্যবহার করতে হবে না । এটি দিয়েও অর্জন করা যেত
typedef char ABC[MAX];
তবে তারপরে আপনার আরও অনেক বড় সমস্যা রয়েছে: আপনাকে সচেতন হতে হবে যে ABC
এটি একটি অ্যারে টাইপ (যদিও আপনি যখন টাইপের ভেরিয়েবলগুলি ঘোষণার সময় এটি দেখতে পাচ্ছেন না ABC
) অথবা অন্যথায় আপনি ABC
অন্যরকম কিছু বোঝাতে চাইবেন বলে আটকে যাবেন একটি চলক ঘোষণা / সংজ্ঞা বনাম একটি ফাংশন আর্গুমেন্ট তালিকায়।
আরও একটি সুবিধা হ'ল স্ট্রাক্ট আপনাকে প্রচুর কোড পুনরায় লেখার প্রয়োজন ছাড়াই পরে আপনাকে আরও বেশি উপাদান যুক্ত করতে দেয়।
আপনি এটি এইভাবে অনুলিপি করতে পারেন।
struct ABC a, b;
........
a = b;
একটি অ্যারের জন্য আপনাকে প্রতিটি উপাদান বরাদ্দ করার জন্য মেমকি ফাংশন বা একটি লুপ ব্যবহার করতে হবে ।
আপনি স্ট্রিংয়ের মতো নতুন ধরণের ডেটা তৈরি করতে স্ট্রাক্ট ব্যবহার করতে পারেন । আপনি নির্ধারণ করতে পারেন:
struct String {
char Char[MAX];
};
অথবা আপনি ডেটাগুলির একটি তালিকা তৈরি করতে পারেন যা আপনি এটি কার্যকারিতা যুক্তি দ্বারা ব্যবহার করতে পারেন বা আপনার পদ্ধতিতে এটি ফিরিয়ে দিতে পারেন। স্ট্রাকটি অ্যারের চেয়ে আরও নমনীয়, কারণ এটি কিছু অপারেটরকে সমর্থন করতে পারে = এবং আপনি এটিতে কিছু পদ্ধতি সংজ্ঞায়িত করতে পারেন।
আশা করি এটি আপনার পক্ষে কার্যকর হবে :)
এ জাতীয় ব্যবহারের আরেকটি সুবিধা struct
হ'ল এটি যেখানে - সেখানে struct
ব্যবহৃত হয় যেখানে এটি সুরক্ষা প্রয়োগ করে ; বিশেষত আপনার যদি একই উদ্দেশ্যে বিভিন্ন উদ্দেশ্যে ব্যবহৃত একই আকারের অ্যারে সমন্বিত দুটি প্রকার থাকে, তবে এই ধরণেরগুলি আপনাকে দুর্ঘটনাক্রমে একটি অ্যারে যথাযথভাবে এড়াতে সহায়তা করবে।
আপনি যদি একটিতে অ্যারে না জড়ান struct
, আপনি এখনও এর জন্য একটি ঘোষণা করতে পারেন typedef
: এর কিছু সুবিধা রয়েছে struct
- type টাইপটি একবার ঘোষণা করা হয়, automatically আকারটি স্বয়ংক্রিয়ভাবে সঠিক হয়, code কোডের উদ্দেশ্যটি আরও পরিষ্কার হয়, • এবং কোডটি আরও রক্ষণাবেক্ষণযোগ্য - তবে আপনি হারাবেন ◦ কঠোর প্রকারের সুরক্ষা, copy প্রকারের মানগুলি অনুলিপি করার এবং ফিরিয়ে দেওয়ার ক্ষমতা এবং আপনার বাকী কোডটি না ভেঙে পরে সদস্য যুক্ত করার ক্ষমতা। typedef
প্রদত্ত প্রকারের খালি অ্যারেগুলির জন্য দুটি গুলি কেবলমাত্র বিভিন্ন আকারের হলে বিভিন্ন ধরণের উত্পাদন করে। তদুপরি, আপনি যদি কোনও ফাংশন আর্গুমেন্ট typedef
ব্যতীত ব্যবহার করেন তবে এটি টাইপ-সুরক্ষা মারাত্মকভাবে হ্রাস *
করার সমতুল্য char *
।
সংক্ষেপে :
typedef struct A_s_s { char m[113]; } A_s_t; // Full type safey, assignable
typedef char A_c_t[113]; // Partial type-safety, not assignable
A_s_t v_s(void); // Allowed
A_c_t v_c(void); // Forbidden
void s__v(A_s_t); // Type-safe, pass by value
void sP_v(A_s_t *); // Type-safe
void c__v(A_c_t); // UNSAFE, just means char * (GRRR!)
void cP_v(A_c_t *); // SEMI-safe, accepts any array of 113
কোনও কাঠামোতে অ্যারে ইনিশিয়ালাইজেশন, অনুলিপি এবং ফিনি ফাংশনগুলি ওওপি মেমরি পরিচালনার প্যারাডিমগুলির কিছু সুবিধা অনুকরণ করে থাকতে পারে। প্রকৃতপক্ষে, কোনও ব্যবহারকারীর সংজ্ঞায়িত কাঠামো পরিচালনা করতে জেনেরিক মেমোরি ম্যানেজমেন্ট ইউটিলিটি (আকারের () কাঠামোটি ব্যবহার করে ঠিক কতগুলি বাইট পরিচালনা করা হচ্ছে তা জানতে) লিখতে এই ধারণাটি প্রসারিত করা খুব সহজ। সি তে লেখা অনেক স্মার্ট প্রোডাকশন কোড বেসগুলি এগুলি খুব বেশি ব্যবহার করে এবং এর স্কোপ খুব স্থানীয় না হলে সাধারণত কোনও অ্যারে ব্যবহার করে না।
প্রকৃতপক্ষে কোনও কাঠামোর এমবেড থাকা অ্যারের জন্য, আপনি এই "অ্যারে অ্যাক্সেস করতে চাইলে যে কোনও সময় বাউন্ড চেকিংয়ের মতো অন্যান্য" স্মার্ট জিনিস "করতে পারেন। আবার, অ্যারে স্কোপটি খুব সীমাবদ্ধ না হলে এটি ব্যবহার করা এবং প্রোগ্রামগুলি জুড়ে তথ্য সরবরাহ করা খারাপ ধারণা। যত তাড়াতাড়ি বা পরে, আপনি এমন বাগগুলিতে দৌড়াবেন যা আপনাকে রাত জাগিয়ে তুলবে এবং আপনার সাপ্তাহিক ছুটির দিন নষ্ট করবে।
struct
ধারণকারী শুধুমাত্র একটি অ্যারের।