>> বক্তা 1: এর একটি প্রোগ্রাম লিখুন যাক যে নামের জন্য ব্যবহারকারীকে এবং লিখতে অনুরোধ
তিন ছাত্র ঘর.
এখন, যারা নাম এবং ঘর সংরক্ষণ আমরা, কি, ছয় ভেরিয়েবল ব্যবহার করতে পারেন.
তিনটি নাম জন্য স্ট্রিং, এবং অন্য ঘর জন্য তিনটি স্ট্রিং,
কিন্তু আমরা ইতিমধ্যে আমরা পরিষ্কার করতে পারেন যে জানি পরিবর্তে অ্যারে ব্যবহার করে যে কোড,
উদাহরণস্বরূপ জন্য মাপ 3 একটি অ্যারের তিনটি নাম, এবং অন্য অ্যারের
ঘর জন্য সাইজ 3.
কিন্তু আমরা এই পরিষ্কার করতে পারে দেখা যাচ্ছে আরও এখনও, এবং আসলে ঐ রাখা
একসাথে নাম এবং ঘর, যাতে একটি ছাত্র এর নাম এবং তার ঘর
একরকম তাই যাও, encapsulated হয় একই ভেরিয়েবলের মধ্যে, কথা বলতে.
>> এটি করার জন্য, যদিও, আমরা ঘোষণা করতে হবে আমাদের নিজস্ব তথ্য টাইপ, সি আমাদের নিজস্ব ধরন,
সি এর লেখক অগত্যা না যে বছর আগে মনে হয়.
এটি করার জন্য আমরা কিওয়ার্ড ব্যবহার করতে পারেন typedef, বরাবর
অন্যান্য অভিব্যক্তি struct.
এর কটাক্ষপাত করা যাক.
Structs.h এর ভিতরে, আমি ইতিমধ্যে করেছি শুরু অর্জিত
CS50 লাইব্রেরি সহ.
আমি এর পরে, typedef struct টাইপ করা যাচ্ছে না এবং তারপর একটি কোঁকড়া বক্রবন্ধনী.
Struct এর ভিতরে, আমি যাচ্ছি একজন ছাত্র আছে হইবে যে নির্দিষ্ট একটি
নাম বলা স্ট্রিং, এবং অন্য স্ট্রিং ঘর বলা হয়.
আমি তখন আমার কোঁকড়া ধনুর্বন্ধনী বন্ধ করা যাচ্ছে না, এবং নির্দিষ্ট করে নাম
এই নতুন তথ্য টাইপ ছাত্র হইবেন.
অন্য কথায়, এই বাক্য গঠন মাধ্যমে আমি আছে আমার নিজের একটি নতুন ডাটা টাইপ ঘোষণা
যে একটি মুহূর্ত আগে বিদ্যমান, এবং না করে এই তথ্য টাইপ ভেতরে দুটি তথ্য আছে
ক্ষেত্র বা তথ্য সদস্য, নাম বলা এক, এক নামক ঘর, উভয় যা
টাইপ স্ট্রিং হয়.
>> এর এখন এই ধরনের ব্যবহার করি একটি প্রকৃত প্রোগ্রাম.
Structs0.c, আমি একভাবে অর্জিত করেছি নিজেকে কিছু সঙ্গে ইতিমধ্যেই শুরু
boilerplate কোড, এবং আমি এখন আছি এই তথ্য ব্যবহার করতে যাচ্ছে
নিম্নরূপ, ছাত্র টাইপ করুন.
আমি প্রথম একটি ঘোষণা করা যাচ্ছে না টাইপ ছাত্র বা অ্যারে, আমি করব
অ্যারে ছাত্র কল -
বহুবচন -
এবং আমি এর আকার হবে উল্লেখ করব এর মান যা, নোটিশ, তিন,
ধ্রুব ছাত্র -
সব রাজধানীতে -
আমি এখানে আপ ঘোষণা করেছি যে, তার আগে ফাইলে.
এর এখন যারা তিন উপর বারবার যাক ছাত্র, এবং জন্য ব্যবহারকারীকে অনুরোধ জানানো
তাদের নাম এবং ঘর.
>> আমি 0 পেতে কোন int জন্য, আমি কম যে ধ্রুব চেয়ে, আমি +.
এবং এখন জন্য এই শরীরের ভিতর লুপ, আমি কিছু প্রিন্ট আউট চলেছি
ছাত্র এর নামের মত.
আমি তখন আসলে পেতে যাচ্ছি যে নির্দিষ্ট করে ছাত্র এর নাম
ছাত্র আমি বন্ধনী.
অর্থাৎ আমি I-তম ছাত্রী চান এখন ছাত্র নামক অ্যারে, কিন্তু
আমি যে আমি ম ছাত্র এর এ পেতে চান নাম দিন, এবং এই কাজ করতে, আমি ব্যবহার করতে যাচ্ছি
. অপারেটর, একটি এ পেতে struct নির্দিষ্ট ক্ষেত্র ভিতরে.
তাই আমি ছাত্র আমি. নাম বন্ধনী উল্লেখ GetString ফেরত মান পায় ().
ইতিমধ্যে, আমি প্রিন্ট আউট করা যাচ্ছে না অনুরূপ কিছু, ছাত্র এর বলছে
ঘর, এবং এখন আমি উল্লেখ করা যাচ্ছে না যে আমি ম ছাত্র ঘর ক্ষেত্রের
ফেরত মান পেতে হইবে GetString অন্য কল ().
>> এখন আসুন এই তিনটি সঙ্গে কিছু করতে দেওয়া ছাত্র 'নাম এবং ঘর,
মুদ্রণ মত সহজ কিছু একটি বাক্যে প্রতিটি আউট.
int-এর জন্য আমি 0, আবার আমি কম পেতে ছাত্র, আমি + printf, "% s-% গুলি করা হয়.
ব্যাকস্ল্যাশ এন ", এবং এখন আমার মধ্যে চলা যাক ঐ দুটি ক্ষেত্র মান,
ছাত্র আমি. নাম, কমা বন্ধনী ছাত্র আমি বন্ধনী. বাড়িতে, বন্ধ
paren, সেমিকোলন.
>> এবং এখন আমি আরও একটি জিনিস করতে প্রয়োজন.
এই ফাইলের নীচে, আমি প্রয়োজন বরাদ্দ ছিল যে মেমরি মুক্ত
GetSring (), দ্বারা পর্দার পিছনের যা অবশ্যই, যাতে malloc আহ্বান
স্ট্রিং জন্য মেমরি বরাদ্দ ব্যবহারকারী ধরনের.
কিন্তু এই সহজ.
আমি 0 পেতে কোন int জন্য, আমি কম ছাত্র, আমি +, এবং শরীরের ভিতর
এই লুপ জন্য, আমি কেবল যাচ্ছি বিনামূল্যে ছাত্র বন্ধনী আমি. নাম প্রদান,
এবং বিনামূল্যে ছাত্র আমি বন্ধনী. ঘর.
>> এখন, আমরা পরিষ্কারভাবে loops জন্য তিনটি ব্যবহার করেছি এই প্রোগ্রামের মধ্যে, যখন সত্যিই আমি
শুধু একটা ব্যবহৃত, কিন্তু এই হল থাকতে পারে শুধু বিক্ষোভের দোহাই জন্য, যাতে
আমরা তিনটি স্বতন্ত্র মধ্যে নির্দিষ্ট করতে পারেন আমরা করছি ঠিক কি পদক্ষেপ.
আমরা প্রথম একটি নাম এবং একটি ঘর পেয়ে থাকেন ছাত্র প্রতিটি জন্য, আমরা তাহলে হন
জন্য নাম এবং ঘর মুদ্রণ তিন ছাত্র প্রতিটি, এবং
তারপর আমরা মেমরি মুক্ত করতে যাচ্ছেন ছাত্র প্রতিটি ব্যবহৃত.
কিন্তু নিশ্চয় আমরা এই একত্রিত করেছি পারে লুপ জন্য এক বড় মধ্যে.
>> কম্পাইল, এর এখন সংরক্ষণ যাক, এবং এই প্রোগ্রাম চালানো.
করতে structs 0. / structs 0, ছাত্র এর নাম দিন, এর ডেভিড প্রদান করা যাক, তিনি বসবাস করব
মাথের হাউস মধ্যে, ছাত্র এর নাম, এর যাক Lauren বলে, সে Leverett বাস করব
হাউস, ছাত্র এর নাম, রব, তিনি পাবেন কার্কল্যান্ড বাড়িতে বাস.
এবং প্রকৃতপক্ষে, ডেভিড, মাথের হয় Lauren, Leverett হয়
ও রব কার্কল্যান্ড হয়.