[Powered by Google Translate] [সপ্তাহ 4, ক্রমাগত]
[ডেভিড জে Malan - হার্ভার্ড বিশ্ববিদ্যালয়]
[এটি CS50. - CS50.TV]
>> এটি CS50, এবং এই সপ্তাহে 4 শেষে.
তাই কিছু ভাল খবর এবং কিছু খারাপ খবর.
সোমবার কোন বক্তৃতা, কোন সমস্যা সেট পরের সপ্তাহে. [ছাত্র হর্ষধ্বনি]
আপনি যেখানে এই যাচ্ছে চান যাচ্ছেন না.
কিন্তু আমরা এই আছে পরিবর্তে কি পরের বুধবার,
এবং এছাড়াও পাঠ্যক্রম 1 শুক্রবার বক্তৃতা প্রতি আছে পরের শুক্রবার যাতে আমরা অবগত থাকুন পারেন.
কিন্তু সবকিছু স্বাভাবিক হিসাবে, শুট করা হবে, তাই চিন্তা যাও.
>> এবং সঙ্গে 0 বিষয়ে আমরা কি সপ্তাহের শেষ দিকে করব যাও উপহাস
অবশ্যই এর হোমপেজে cs50.net একটি ব্যাখ্যা তে পোস্ট করা হয়
প্রত্যাশা কিরুপ আপনি যখন এটি প্রথম ব্যঙ্গ আসে থাকা উচিত.
সাধারণভাবে, এটি মাল্টিপল চয়েস, সত্য মিথ্যা, সংক্ষিপ্ত উত্তর, অল্প কোডিং সমস্যা হবে.
আপনি করা হবে বলে আশা করা সমতুল্য বাস্তবায়ন করছি যাচ্ছে না
যার জন্য একটি সমস্যা যে আপনি একটি pset দেখতে হবে, আপনি একটি কম্পিউটার আছে
এবং একটি ডিবাগার এবং ভালো, কিন্তু ছোট কোডিং করা সমস্যা হবে.
>> এবং প্রকৃতপক্ষে, সেরা গাইড কি CS50 ক্যুইজ একটা ধারনা পেতে মত
cs50.net যেতে হয় কুইজ লিংক এ যান,
এবং আপনি গত কয়েক বছর মূল্যবানের quizzes দেখতে পারেন.
শুধু বুঝি যে পাঠ্যক্রম বছর ধরে হয়েছে সবসময় একই করেনি না.
কখনও কখনও আমরা, কখনও কখনও যোগ বিয়োগ,
তাই যদি আপনি সেই পুরানো ক্যুইজ উপর কিছু বিষয় দেখুন
আপনি যে কোন ধারণা এটা কি সম্বন্ধে কথা বলা থাকে, এটা হয় যে আমরা কি এটা আবরণ
অথবা আমরা সেটিকে আবরণ না.
কিন্তু রিভিউ ফর্ম, এই রবিবার, সোমবার, এবং মঙ্গলবার
সেইসাথে একটি কোর্স ব্যাপী রবিবার রাতে পর্যালোচনার সময় -
সময় এবং অবস্থান যাও কোর্স এর হোমপেজে ঘোষণা করা হবে -
আপনি সব কোর্সের এর শিক্ষণ ফেলোগণ সঙ্গে পর্যালোচনা করার সুযোগ
এই বছরের জন্য উভয় বিভাগে এবং পূর্ণ বর্গ হিসাবে একটি উপাদান,,
এবং যারা স্বাভাবিক হিসাবে হিসাবে ভাল শুট করা হবে.
>> ঠিক আছে. তাই আরও ঝামেলা ছাড়া, পাস এক মন্তব্যটি / কর্ম ব্যর্থ হবে এবং যোগ / ড্রপ.
আপনি আমার নোট শেষ রাতে দেখা হয়ে থাকতে পারে, এবং এই আসলেই কিছু কিছু অতিরিক্ত আশ্বস্ত
আপনি যদি বিশেষ করে যারা কম আরামদায়ক বা কোথাও মধ্যে মধ্যে আছে
এবং আপনি আপনার মাথা অল্পমাত্র বিট বোধ করছি,
যে প্রকৃতপক্ষে অত্যন্ত স্বাভাবিক বুঝতে পারছি, এবং একটি প্রশস্ত জায়গায় সমর্থন কাঠামো আছে,
এক ঘন্টা অফিসে যা ছিল আমার ইমেল শেষ প্রতি রাতের সব আরো উন্নত করার অভিপ্রায়,
এবং খুব বুঝতে পারি যে পাস মত একটি বিকল্প ভালো একটি বর্গ জন্য / বিফল
সত্যিই একটি প্রক্রিয়া নষ্ট করা ভালো একটা কোর্স চালু হিসাবে বোঝানো হয়,
যাতে আবার যদি আপনি ঐ 10, 15, 20 ঘন্টা খরচ করছেন
শুধুমাত্র কিছু pset কাজ পেতে চেষ্টা এবং আপনি কি জানেন আপনি কি ভাবে 90-95%
কিন্তু আপনি কিছু জঘন্য একটি বাগ খুঁজে পাস না, / করতে পারেন মডেল যে ধরণের অনুমোদন ব্যর্থ.
>> ধারণা করা হয় যে যে ব্যবস্থার সাথে আপনি তারপর আপনার অন্যান্য psets ফোকাস যেতে পারেন
বা বা নিদ্রা যাই হোক না কেন এটা আপনি ফোকাস করতে চান.
যাতে আপনি এই আগামী মঙ্গলবার পর্যন্ত আছে বুঝতে - টেকনিক্যালি 5th সোমবার,
কিন্তু এটা একটা ছুটির দিন, তাই এই আসছে মঙ্গলবার - পাস থেকে / স্যুইচ graded বা তদ্বিপরীত নারা.
এবং যদি আপনি উপর অতট সত্যিই হন এবং ড্রপ সম্পূর্ণভাবে চিন্তা ভাবনা করেন,
পরে সম্পর্কে বক্তৃতা বা আঁকড়ি সম্পর্কে একটি নোট ড্রপ করুন.
আমরা অন্তত চ্যাট করার আগে আপনি বিদায় বিড ভালোবাসতাম.
ঠিক আছে. তাই আমরা শুরু শেষ সময় বন্ধ চাকার প্রশিক্ষণ গ্রহণ.
বিশেষ করে, আমরা স্ট্রিং নিবদ্ধ.
স্ট্রিং এমন কিছু বিষয় যা CS50 গ্রন্থাগারের ঘোষণা এর,
বিশেষভাবে যে ফাইল নামক cs50.h যা আমরা এই সপ্তাহে এবং পরবর্তী পর্যবেক্ষণ করা শুরু করব.
কিন্তু পংক্তিটি সত্যিই একটা কিছু একটি সরলীকরণ
যে কিছুটা গৃহস্থালি * হিসাবে আরো arcanely বর্ণিত.
Char আমরা পরিচিত. এটি শুধু একটি অক্ষর.
কিন্তু সোমবার হিসাবে * denoted কি? >> [ছাত্রদের] একটি পয়েন্টার.
একটি পয়েন্টার. এবং কি এর একটি পয়েন্টার? >> [ছাত্রদের] একটি ঠিকানা.
>> এটি একটি ঠিকানা, মেমরির মধ্যে একটি ভালো এর অবস্থান.
একটি ঠিকানা বা অবস্থান বা মেমরি কি?
আবার, আমাদের সমস্ত একটি কোঁচ বা RAM-র 2 গিগাবাইট ল্যাপটপের সঙ্গে আছে সম্ভবত এই দিন,
এবং তার মানে আপনি একটি বিলিয়ন বা 2 বিলিয়ন বাইট মেমরির মূল্য আছে.
এবং এটি কি শারীরিকভাবে মতো সত্যিই কোন ব্যাপার না,
বিশ্বাসের উপর কিন্তু নিতে যে আপনি ব্যক্তিগত বাইট যে আপনার নিজের ল্যাপটপ আছে সব নম্বর পারেন -
এই বাইট 0, এই বাইট 1, এই বাইট 2 বিলিয়ন -
এবং যে ঠিক কি একটি কম্পিউটার আছে.
আপনি যখন একটি একক চরিত্র জন্য স্থান বরাদ্দ করা, উদাহরণস্বরূপ,
এটি সম্ভবত কোথাও আপনার কম্পিউটার এর মেমরি বাস আছে,
এবং হয়ত এটা বাইট নম্বর 12345 ২ এর,
এবং যে কোথাও আপনার কম্পিউটার এর মেমরি আপ এখানে.
এবং যে চরিত্র তারপর ঠিকানা হল 12345.
>> সপ্তাহ 0 থেকে এখন পর্যন্ত বর্তমান,, সত্যিই আমরা যত্ন না
যেখানে মেমরি জিনিস কারণ সাধারণত আমরা চিহ্ন ব্যবহার সংরক্ষণ করা হয়,
ভেরিয়েবল, এবং অ্যারে আসলে আমাদের এ তথ্য পেতে পারেন.
কিন্তু সোমবার এবং আরো সব আজ হিসাবে, এখন আপনি কি আছে করছেন যাচ্ছে
সব লেখা প্রোগ্রাম সঙ্গে আরো ভাবপূর্ণ ক্ষমতা
সত্যিই একটি কম্পিউটার এর মেমরি তবে আপনি দেখতে মাপসই নিপূণভাবে,
জন্য উভয় উদ্দেশ্যে ভাল এবং খারাপ,
বাগ হচ্ছে এই শেখার উপাদান এই সময়ে খুব সাধারণ ফলাফল.
কিন্তু সত্যিই কি এটা একটি * গৃহস্থালির কাজ করা মানে?
চলুন এগিয়ে যাও, ফিরে যান - এবং আমরা Binky ফিরে আসা হিসাবে প্রতিশ্রুত আজ করব.
যাক এর একটি সহজ উদাহরণ এখানে যান.
আমাকে এই ফাইল হিসাবে compare.c, সংরক্ষণ এবং শুধুমাত্র সম্পর্কে এখানে কিছু টেমপ্লেট কোড পেতে দেওয়া
তাই stdio.h অন্তর্ভুক্ত, আমাকে এছাড়াও নিজেকে মধ্যে দিতে cs50.h. আমি সেখানে জুম করবেন.
আমাকে আরম্ভ প্রধান int, প্রধান (অকার্যকর) লেখা, এবং এখন আমি ভালো কিছু করতে চাই:
printf ("সম্পর্কে একটি স্ট্রিং দিন:") এবং তারপর আমি স্ট্রিং গুলি GetString সম্ভার ব্যবহার করা হবে
ব্যবহারকারী যাও থেকে একটি পংক্তি পেতে তারপর, আমি অন্য একটি ব্যবহারকারীর জন্য জিজ্ঞাসা করতে যাচ্ছি.
("সম্পর্কে অন্য স্ট্রিং দিন:") এবং আমি যে পেতে GetString মাধ্যমে তাদের জিজ্ঞাসা করতে যাচ্ছি.
আমি টন টন কারণ এটা ফোন আসে এবং পরে গুলি গুলি একটি স্ট্রিং জন্য সুন্দর নাম যদি এটি বেশ জেনেরিক করব.
সুতরাং GetString, এবং এখন আমি একটি মানসিক সুস্থতা চেক ঠিক করতে চান এবং আমি বলতে যাচ্ছি
তারপর যদি (গুলি == টন) আমি printf ব্যবহারকারী বলুন ("আপনি একই জিনিস করতে \ n টাইপ") করছি যাচ্ছে;
অন্যথায় আমি ভালো ("আপনি টাইপ কিছু ভিন্ন! \ n") কিছু প্রিন্ট আউট চলেছি
যাই হোক না কেন বা বাক্য হতে হবে. তাই মত.
তারপর স্বাভাবিক হিসাবে, যা শুধু আমি 0 জ্ঞাপিত যে কিছুই খারাপ কি ফিরে আসবেন,
এবং আমি এগিয়ে যান এবং কম্পাইল এবং এই প্রোগ্রাম চালানো যাচ্ছে না.
>> কিন্তু সোমবার আমরা এই প্রোগ্রাম দৌড়ে,
এবং প্রকৃতপক্ষে যে হ্যালো হয় এবং বিদায় বিদায় নয় হ্যালো না বলা হয়েছিল.
আচরণ আমরা দেখেছি ভালো ছিল একটু বেশি.
যাক আমার সম্পর্কে সোর্স ডিরেক্টরিতে যান এখানে জুম ইন, এবং এর সাথে তুলনা করতে না দেওয়া.
সংকলিত ঠিক আছে. সম্পর্কে চালানোর তুলনা করা যাক. সম্পর্কে একটি স্ট্রিং দিন: হ্যালো.
সম্পর্কে অন্য স্ট্রিং দিন: হ্যালো.
আপনি নতুন কিছু টাইপ!
আচ্ছা, আমাকে সহজ 50, 50 ভালো কিছু করার চেষ্টা করুন. আপনি নতুন কিছু টাইপ!
সালাম, সালাম. সুতরাং স্পষ্ট, কিছু এখানে হবে.
কিন্তু কি জন্য ব্যাখ্যা কেন?
দৃশ্যত, লাইন 12 সম্পূর্নরুপে ক্রিয়াহীন.
মৌলিক এখানে সমস্যা কি? হাঁ. >> [ছাত্রদের] এটা অ্যাড্রেস এর তুলনা.
হাঁ, ঠিক. এটা আসলে এর ঠিকানা তুলনা
যা হ্যালো হ্যালো এবং সংরক্ষণ করা হয়.
এটা হ্যালো তুলনা অক্ষর না আবার এবং আবার,
কারণ সত্যিই কি ঘটেছিল এর, সব সময় আমরা এই করছি GetString ব্যবহার করে -
এই বিদ্যালয়ে লিপির জন্য তক্তা আবার আমাদের কম্পিউটার এর মেমরি,
এবং এর দেওয়া বলতে আমি একটি পরিবর্তনশীল গুলি প্রকাশক পরে GetString কল.
কি আমার মেমরি কেমন হয়েছে?
চলুন শুরু করা যাক যে নির্বিচারে গুলি ভালো দেখায়. এটি একটি বর্গক্ষেত্র.
এবং প্রায় কাছাকাছি কোনো সময় আমি মেমরি পর্দায় টুকরা টানা করেছি
যদি এটা 32 বিট আমি ভালো স্কোয়ার অঙ্কন করেছেন প্রয়োগ করা হয়েছে কারণ প্রকৃতপক্ষে,
একটি পয়েন্টার, একটি ঠিকানা, 32 বিট. এটা কোন int হিসাবে একই.
যে কম্পিউটার সিস্টেমের উপর ভিত্তি করে পরিবর্তিত হতে পারে.
আপনাদের মধ্যে যারা সত্য যে আপনার ম্যাক বা পিসি 64 বিট দিয়ে অস্পষ্টভাবে পরিচিত,
আসলে দ্বারা বোঝানো হয় যে আপনার কম্পিউটারে 64 বিট পয়েন্টার ব্যবহার করে করা হয়,
64 বিট ঠিকানা, এবং এর মধ্যে যে upsides আপনার কম্পিউটার
বিগতবত্সর তুলনায় অনেক বেশি RAM উপস্থিত থাকতে পারে.
ফিরে দিনের লং সংক্ষিপ্ত বিবরণ, শুধুমাত্র যখন কম্পিউটারে 32 বিট ব্যবহৃত
যাও ঠিকানাগুলি প্রতিনিধিত্বকারী, বাইট বৃহত্তম সংখ্যা আপনি প্রতিনিধিত্ব করতে পারে
যে ক্ষেত্রে ছিল কি যদি আপনি 32 বিট আছে?
তাই 4 বিলিয়ন, অধিকার, কারণ 2 যাও 32 4 বিলিয়ন.
এই নম্বর কোর্সে হচ্ছিল.
>> তাই আপনি যদি শুধুমাত্র আপনি 32 বিট, আছে সর্বোচ্চসংখ্যক আপনি গণনা করা যেতে পারে, প্রায় 4 বিলিয়ন.
কিন্তু কয়েক বছর আগে পর্যন্ত ছিল একটি কম্পিউটারের মৌলিক সীমাবদ্ধতা
কারণ যদি আপনি কেবলমাত্র 4 বিলিয়ন হিসাবে হিসাবে উচ্চ গণনা করতে পারেন,
এটা যদি আপনি উপস্থিত RAM-র 8 গিগাবাইট বা এমনকি উপস্থিত RAM-র 5 ​​গিগাবাইট কিনতে না ব্যাপার;
আপনি যে উচ্চ গণনা, এটি ছিল না, তাই বেহুদা পারেন.
আপনি শুধুমাত্র প্রথম আপনার কম্পিউটার এর মেমরি 3 বা 4 গিগাবাইট অ্যাক্সেস করতে পারে.
এটা এখন কোনো সমস্যা কম, এবং আপনি MacBook পেশাদাররা এবং Dells কিনতে পারি
সঙ্গে উপস্থিত RAM-র 8 গিগাবাইট বা আরও বেশি এইসব দিন.
কিন্তু যদি আমি এই প্রোগ্রামের মধ্যে বরাদ্দ করা একটি বেশ সহজভাবে পয়েন্টার, পয়েন্টার নামক একটি গুলি,
এটা ভালো পর্দায় কারণ প্রকৃতপক্ষে আমরা ছুলা ফিরে যাও এই স্তর প্রয়োজন চেহারা হতে পারে.
আমি স্ট্রিং রাখতে বলছে, কিন্তু এর হিসাবে সোমবার, স্ট্রিং সত্যিই গৃহস্থালি *,
কিছু চরিত্রের ঠিকানা.
সুতরাং এর চাকা বন্ধ যে প্রশিক্ষণ দেওয়া হবে, যদিও আমরা এখন জন্য GetString ব্যবহার চালিয়ে যাব.
তাই আমি গুলি ঘোষণা, এবং করেছি এই মেমরি একটি খণ্ড, 32 বিট.
এখানে কি ডিফল্ট দ্বারা মেমরি আছে? >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া]
ওটা কি? >> [ছাত্রদের] জঞ্জাল. >> জঞ্জাল. ঠিক.
আপনি যদি প্রোগ্রামার একটি মান ভেরিয়েবলের মধ্যে কি করা উচিত, কে জানে কি হয়?
কখনও কখনও আপনি পেতে ভাগ্যবান এবং এটা 0, যা একটি সুন্দর, পরিষ্কার ডিফল্ট মান ধরনের,
কিন্তু হিসাবে আমরা দেখেছি সোমবার কখনও কখনও, এটা সম্পূর্ণ অর্থহীন বিষয়,
কিছু বড় ধনাত্মক বা ঋণাত্মক সংখ্যা যে যেখানে থেকে এসেছেন?
হাঁ. >> [ছাত্রদের] আগে ফাংশন. >> হ্যাঁ.
>> প্রায়ই ফাংশন যে আগে কারণ মনে রাখতে বলা আছে,
হিসাবে আপনি মেমরি ইন ফাংশান কল, তারা নিতে নিচ থেকে আরো এবং আরো স্থান আপ আপ,
এবং যত তাড়াতাড়ি ফাংশন আয়, যে মেমরি পুনঃব্যবহৃত পরার
পরের লোক যে নামক পরার দ্বারা, যারা আপনার মেমরি একই ছে ব্যবহার করা হয়.
এবং যদি আপনি বাম সেখানে আবর্জনা, পূর্ববর্তী মান করেছেন,
আমরা কিছু মূল্য আছে যখন সত্যিই সেখানে আমরা কিছু না করা আছে হিসাবে গুলি ভুল হতে পারে.
সুতরাং এই সময়ে আমাদের এই RAM-র মত দেখাচ্ছে.
এখন লাইন 7 ডান দিকে আমরা GetString আহ্বান করছি,
যা আমরা করছি সপ্তাহের জন্য এখন করছেন, কিন্তু সত্যিই কি করছেন GetString হয়?
GetString CS50 কর্মীদের দ্বারা লিখিত হয় একটু বুদ্ধিমান
যে যত তাড়াতাড়ি ব্যবহারকারী আরম্ভ টাইপ নির্দেশক এবং হিট লিখুন,
GetString পরিসংখ্যান আউট কতগুলি keystrokes কি ব্যবহারকারী হিট,
কতগুলি অক্ষর উপস্থিত RAM-র জন্য বরাদ্দ করা প্রয়োজন আমি.
এবং যেখানে যে উপস্থিত RAM-র থেকে আসে, কে জানে?
এটা আপনার কম্পিউটার এর 2 গিগাবাইট বা মেমরি যাবদ্ধর কোথাও এর.
কিন্তু যাক এর যে কম্পিউটার হ্যালো শব্দ জন্য স্থান পাওয়া অধিকার এখানে অনুমান.
আমি টাইপ করা শব্দ ছিল H-ই, L-L-O.
এবং যদি আমরা অক্ষরের একটা ক্রম হিসাবে এই আঁকা, আমরা ভালো করে দিতে পারে.
কিন্তু আমি 1 অতিরিক্ত জিনিস করতে হবে. সি জন্যে কি কোন পংক্তির শেষে?
নাল অক্ষর, যা আমরা \ 0 হিসাবে লিখুন.
এটা টেকনিক্যালি এর সংখ্যা 0, কিন্তু backslash সব পরিষ্কার করে তোলে
যে এই আক্ষরিক অর্থ হল নম্বর 0, পূর্ণসংখ্যা 0;
এটা, উদাহরণস্বরূপ, মূল্যউদ্ধৃতি-উদ্ধতি 0 যে আপনি কীবোর্ড এ টাইপ পারে না.
তাই এই হ্যালো হয়.
>> আমরা কি এবং সোমবার বলেছেন যে GetString মত একটি ফাংশন
না আসলে ফিরে সব এই সপ্তাহ?
কারণ এটা তাদের অর্থ আছে সত্যিই আছে না ফিরে কোনটাই একটি স্ট্রিং এর
কারণ পংক্তি উপস্থিত নয়. ঐগুলি CS50 লাইব্রেরি একটি জালিয়াতি ধরণের.
সত্যিই কি একটি স্ট্রিং, আরো টেকনিক্যালি? >> [ছাত্রদের] এটা প্রথম অক্ষর.
ঠিক. এটা বেশ সহজভাবে প্রথম অক্ষর টাইপ করা ঠিকানা যে ব্যবহারকারী ইন
তাই আপনি যদি আমার শব্দ হ্যালো শেষ বাইট নম্বর 123 এ এবং তারপর এ সংখ্যা 124 বাইট এটি আপ,
125, 126, যাতে এবং ঘোষণা, যদি আমি 0 থেকে আমার বাইট নম্বর,
কি সত্যিই GetString ফিরে না হয় আক্ষরিক সংখ্যা 123.
তাই গুলি রাখা হয় পরার নম্বর 123,, না অক্ষর H না শব্দ হ্যালো,
বেশ সহজভাবে ঠিকানা যা আমি হ্যালো প্রথম চিঠি খুঁজে পেতে পারেন.
কিন্তু যে যথেষ্ট ভালো বলে মনে হচ্ছে না. আমি একটি স্ট্রিং জন্য আপনাকে জিজ্ঞাসা, একটি অক্ষর না.
তাই কিভাবে আমরা বা কম্পিউটার যে éllo ধরনের H সঙ্গে আসা বরাবর জানি?
চুক্তির সাজানোর আমরা আছে কি? হাঁ.
[ছাত্রদের] এটা রাখে নিজেকে কিছু আরো অক্ষর খুঁজতে বলছে. >> যথাযথভাবে.
>> এই মানুষের কম্পিউটার প্রচল যদ্দ্বারা যখন আপনি স্ট্রিং সাথে ডিল করা হয় নাই,
এখন গৃহস্থালি বড় হিসাবে পরিচিত অন্যথায়, আপনি শুধুমাত্র চিন্তা করা আছে
জীবন যেখানে প্রতিটি পংক্তি শেষে সত্যিই এটা উপর লুপ জন্য একটি সঙ্গে iterating দ্বারা হয়,
যখন একটি লুপ, যাই হোক না কেন, যাতে যখন আপনি স্ট্রিং শেষ খুঁজে পাওয়া
এখন থেকে আপনি যে আবিষ্কার করতে পারেন, ওহ, সম্পূর্ণ শব্দ হ্যালো ছিল.
পূর্বে প্রোগ্রামিং অভিজ্ঞতা আপনার সাথে যারা জাভা জানতে পারেন
আপনি শুধু কল. দ্বারা করতে পারেন এবং অন্যান্য ভাষায় আপনি দৈর্ঘ্য বা অনুরূপ কল করতে পারেন.
কারন অনেক ভাষার মধ্যে বিশেষত, জিনিষ নামক অবজেক্ট ওরিয়েন্টেড ভাষা,
কিছু দৈর্ঘ্য তথ্য নিজেই অংশ encapsulated ভিতর ধরনের,
আমরা অনেক encapsulated এবং ID-র নাম ও সোমবার একটি ছাত্র ভেতরের ঘর চান.
কিন্তু C অনেক নিম্ন স্তরের. কোন বস্তু বা ক্লাস আছে, আপনি যদি সেই পদ শোনা করেছি আগে.
সমস্ত আপনি সত্যিই মেমরি অ্যাড্রেস.
সুতরাং এটা খুবই মজার তথ্য কাঠামো প্রতিনিধিত্বমূলক এর সেকেলে ভাবে সাজানোর.
আপনি একটি প্রথম অক্ষরের ঠিকানা ভালো শুরু মান আছে
এবং তারপরে শুধু কিছু অবাধ প্রচল যে প্রত্যেকের অনুসরণ করতে সম্মত হয়.
সুতরাং কিভাবে স্ট্রিং দ্বারা প্রয়োগ করা হয়, আমরা উপস্থাপিত হয় নি?
Strlen, strlen, যা এখন আপনাকে কিছু কয়েক বার ব্যবহার করা. এটি বেশ সহজ অধিকার,?
এটা কোড 2 লাইনের মত.
এটি বেশ অনেক হয়তো একটি অতিরিক্ত স্থানীয় পরিবর্তনশীল সঙ্গে কিছু ধরণের জন্য লুপ,.
কিন্তু strlen শুধুমাত্র একটি পয়েন্টার এবং তারপর নিতে \ 0 খুঁজছেন শুরু হয়েছে.
>> এবং যত তাড়াতাড়ি তা খুঁজে বের করে, এটি পদক্ষেপ যে এটি স্ট্রিং গৃহীত এর মোট সংখ্যা ফিরে আসতে পারেন.
সুতরাং আমরা এই থেকে পরের যায় কি আবিষ্কার করতে পারেন.
ধরা যাক তারপর আমি টন হিসাবে আমি লাইন 10 সম্পন্ন করেছি ডিক্লেয়ার.
এটি কিছু আবর্জনা মান. জানে কে প্রথম?
কিন্তু 10 লাইনের ডান দিকে আমি GetString আবার আহ্বান করছি.
যেখানে এই সমাপ্ত কে জানে?
চলুন শুরু করা যাক ইচ্ছামত যে অপারেটিং সিস্টেমের জন্য এটি উপায় এখানে উপর রুম পাওয়া গেছে.
আমি কাকতালীয়ভাবে H-ই, L-L-O টাইপ করুন আবার ঘটবে,
এবং তাই আমরা ছবি একই ধরনের আহরণ করতে পারে.
কিন্তু এটা সত্য যে আমি এই ছবি প্রজাতন্ত্র গুলো বিন্যস্ত করেছেন হয় ইচ্ছাকৃত
কারণ যা এই এক তুলনায় বিভিন্ন হ্যালো.
সুতরাং এখানে এই অবস্থান 456 হতে পারে, এই হল 457, এবং তাই ঘোষণা.
তাই যেখানে একবার প্রশ্ন চিহ্ন ছিল রাখা পরার?
এই ক্ষেত্রে 456.
আমরা এই সংখ্যার করছি অবচয় ইচ্ছামত আজকের পরে কারণ
আমরা কি কিছু ঠিকানা হল সম্পর্কে এত যত্ন যাচ্ছেন না.
সমস্ত আমরা যত্নশীল হয় যে আমরা হ্যালো ভালো তথ্য কিছু অংশ ঠিকানা চিত্র আউট করতে পারেন.
>> তাই সত্যিই মানুষ কম্পিউটার বিজ্ঞান কি মেমরি অ্যাড্রেস সম্পর্কে যখন কথা বলা
পয়েন্টার সম্পর্কে এবং বিশেষভাবে কথা বলা,
যারা বজায় রাখে যেখানে আসলে এই উপাদান হল, - বদলে figuring 123 বার বিরক্ত
আমরা শুধু জানি যে এটা কিছু সাংখ্যিক ঠিকানা হল -
আমরা বিশ্বের সহজতর করা এবং সেটা যে অক্ষরে গুলি প্রতি নির্দেশ করা হয়
এবং টন যে চরিত্রের প্রতি নির্দেশ করা হয়.
এবং যে এটি একটি তীর খুবই অভিপ্রেত
কারণ এখন আক্ষরিক গুলি H ও টন নির্দেশ করা হয় অন্যান্য H নির্দেশ করা হয়
কারণ দিনের শেষে, এটা কি ঠিকানা হল, ব্যাপার না
কিন্তু এটা ব্যাপার যে আমরা কোড কিছু টুকরা সঙ্গে যে ঠিকানা প্রকাশ করার ক্ষমতা আছে.
আমরা এই ঠিকানাগুলি আছে সত্যিই কাজে ব্যবহৃত না এখনো
তাই আমরা যেখানে আমরা এবং পয়েন্টার দিয়ে কিছু করার বাছাই মধ্যে নিক্ষেপ করতে পারেন দেখতে পাবেন,
কিন্তু জন্য এখন লাইন 12 আক্ষরিক কি আমরা মান তুলনা করা হয়
অনুযায়ী লাইন 12 মধ্যে এই বিবরণ?
আমরা হল 123 456 সমান সমান বলছে? এবং যে ক্ষেত্রে স্পষ্টভাবে না.
এমনকি ধারণার দিক থেকে, এই পয়েন্টার নিঃসন্দেহে এই হিসাবে একই না
কারণ আপনি নামক GetString দ্বিগুণ, এবং GetString সুপার চালাক না চেষ্টা,
এটা বুঝতে পারছি না, চেষ্টা করুন, ওহ, আপনাকে স্বাগতম টাইপ 5 মিনিট আগে;
সম্পর্কে আপনি একই পয়েন্টার দিতে হিসাবে আমি আপনি আগে দেন যাক,
এটা মেমরি নতুন চাঙ্গড় প্রতিটি সময় আপনি এটি কল বরাদ্দ.
>> তাই কিভাবে আমরা এই সমস্যাটির সমাধানের জন্য?
যদি মাত্রা আমি স্ট্রিং হ্যালো হ্যালো এবং তুলনা করতে চান -
আমি কীভাবে প্রশ্ন উত্তর সম্পর্কে যান, - আমি পয়েন্টার সম্পর্কে না যত্ন
ব্যবহারকারী একই জিনিস বার টাইপ? প্রয়োজনীয় কি এখানে? হাঁ.
[ছাত্রদের] একটি ফাংশন ব্যবহার করুন. >> আমি বাক্সের একটি ফাংশান ব্যবহার করে দেখতে পারেন.
আমি একটি ফাংশন বলা strcmp, গুলি-t-r,-c-m-পি ব্যবহার করতে পারেন,
ঠিক বলছে স্ট্রিং তুলনা এর সংক্ষিপ্ত সংস্করণ.
এবং উদাহরণস্বরূপ যদি আমরা যেতে মধ্যে,, 2, তুলনা আজ বিলিপত্র এর মধ্যে যা হয়,
আমি কি ঠিক যে.
আমি অন্য সব কিছুর উপর ডাউন লাইন 1 থেকে 26 বা একই রাখা হয় যাতে,
এবং এখন লক্ষ্য করা এই অংশ অল্পমাত্র বিট পরিবর্তন করেনি.
চলুন একটি মুহূর্ত জন্য লাইন 28 এবং উপেক্ষা করা এই এক কেবল ফোকাস.
কি বলে যে আমরা সোমবার str তুলনা আছে?
এই ক্ষেত্রে 2 পয়েন্টার, গুলি এবং টন গ্রহণের প্রক্রিয়া পরিচালনা করে,
বস্তুত ঐ ধরণের 2 চিঠি তার আঙুল নির্বাণ,
এবং এটি কি তা অবশ্যই একটি লুপ যখন জন্য লুপ বা একটি ভালো কিছু,
এবং এটি এই একই? যদি তাই হয়, এটি আঙ্গুলের বা পয়েন্টার এগিয়ে আসে.
এগুলি কি একই, এই একই, এই একই,
এই একই, এই একই? এবং উত্তেজনা, আমি স্ট্রিং দুটি গুলি এবং টন এ শেষে না.
আমি কোন অসঙ্গতি খুঁজে পাওয়া যায় নি. হ্যাঁ, এই স্ট্রিং একই.
Str কি এবং ফিরে না তুলনা যদি 2 স্ট্রিং একই, দৃশ্যত? জিরো.
সুতরাং 0 এই ক্ষেত্রে ভালো কারণ যদি এটি +1- -1 বা ফেরত্,
তার মানে তাদের গুলি ঠিক টন বর্ণানুক্রমে আগে বা পরে টন আসতে হবে.
এবং কেন যে সহায়ক একটি ফাংশন যা বলা আছে যা আগে স্ট্রিং আসে করতে হবে
অথবা পরে একটি অভিধান?
[ছাত্রদের] অনুসন্ধান করা হচ্ছে. >> অনুসন্ধান এবং বাছাই.
>> সুতরাং আপনি বাইনারি অনুসন্ধান বা বুদবুদ সাজানোর মত জিনিষ বা না বাছাই করা মার্জ করতে পারবেন
যেখানে আপনি তুলনা জিনিষ আছে.
এ পর্যন্ত আমরা কিছু কোণ কাটা ধরনের করেছেন এবং বাছাই সম্পর্কে শুধুমাত্র সায়ীদ
সংখ্যার প্রেক্ষিতে কারণ এটা সহজ এবং সুন্দর কথা বলার জন্য,
কিন্তু আপনি অবশ্যই স্ট্রিং, আপেল এবং কলার সাথে তুলনা করতে পারেন,
কারণ যদি আপেল কলা আগে, একইভাবে আসা হয়,
কাছাকাছি পংক্তি আপনি ঠিক মত Rob মেমরির মধ্যে স্থানান্তর করতে পারেন কি ভিডিওতে একত্রীকরণ সাজানোর সঙ্গে
এবং আমরা নির্বাচন সাজানোর, সন্নিবেশ সাজানোর, এবং বুদ্বুদ সাজানোর সঙ্গে মঞ্চে এখানে কি.
সুতরাং যেখানে এই অন্যথায় আমরা নিতে পারি? চলুন এই চেষ্টা.
এর মধ্যে অস্বাভাবিক সাজানোর জন্য একটি মুহূর্ত যে পাঠ এবং ভুলবেন এখন চেষ্টা করুন এবং নিচের কাজগুলো 1.c কপি.
লাইন 21 আমি মুদ্রণ কিছু বলছে না,
তারপর আমি ব্যবহারকারী থেকে একটি পংক্তি না পেয়ে,
তারপর আমি এই চেকআউট করছি.
আমরা সত্যিই আছে অর্জিত এই অভ্যাস মধ্যে এখনো, কিন্তু এর এখন এই না দেওয়া.
চলুন শুরু করা যাক ফিরে আসলে এই স্তর ছুলা. এই সত্যিই গৃহস্থালি *. এই লোক আসলেই গৃহস্থালি *.
এটা কি মানে যাও গুলি == NULL যদি চেক করা হবে?
এটা পরিনত হয় যে যখন আপনি GetString মত একটি ফাংশন কল
বা আরো ঠিক সাধারণত একটি কম্পিউটার আপনাকে কিছু মেমরি দিতে জিজ্ঞাসা,
কিছু ভুল হয়ে যেতে পারে.
আপনি পাগল হতে হবে এবং একটি টেরাবাইট মেমরি জন্য কম্পিউটার চাইতে পারেন
দ্বারা বাইট মেমরির যে শুধু কম্পিউটার নেই বহু ট্রিলিয়ান জন্য জিজ্ঞাসা,
কিন্তু GetString এবং অন্যান্য কার্যাবলী আপনি এ yelling কিছু উপায় প্রয়োজন
যদি আপনি খুব জন্য জিজ্ঞাসা করেছি.
এবং এই GetString উপায় আছে যদি আপনি আরো মেমরি জন্য বলা
তুলনায় কম্পিউটার পাওয়া যায়, এমনকি যদি সেই সুপার সুপার কম সম্ভাবনা
কারণ আমাদের মধ্যে কেউ একটি ট্রিলিয়ন অক্ষর এবং তারপর টাইপ করুন আঘাত লিখুন যাচ্ছি,
কিন্তু সম্ভাবনা কম যদিও এটা হতে পারে, আমি এখনও এটি জন্য ধরো যদি চেক করতে চান,
এবং বিশেষ মান GetString যে, উত্তর, এবং অন্যান্য কার্যাবলী আয়
যদি কিছু ভুল গেছে সমস্ত ক্যাপ হয় শূন্য.
>> এবং কি শূন্য? শূন্য যাতে শুধুমাত্র একটি পয়েন্টার প্রতিনিধিত্ব ঘটবে. এটা মেমরির ঠিকানা 0.
বিশ্বের করার সিদ্ধান্ত নিয়েছে যে ইচ্ছামত, এই যদি হয় আমার কম্পিউটার এর মেমরি - আপনি কি জানেন যে? -
আমরা শুধু কম্পিউটার এর প্রতি মেমরি 1 বাইট চুরি করা যাচ্ছে, এবং এই অবস্থান করছেন 0.
আমরা এটা শূন্য একটি ডাক নাম দিতে যাচ্ছে, আমরা অঙ্গীকার করছি এবং যাচ্ছেন
আসলে আমরা প্রকৃত তথ্য কখনোই প্রকাশ করা হবে
কারণ আমরা শুধু ইচ্ছামত একটি বিশেষ মান, 0, ওরফে শূন্য প্রয়োজন,
যাতে আমরা ব্যবহারকারীরা যদি কিছু গোলমাল চিত্কার করতে পারেন.
অন্যথায় আপনাকে কিছু এখানে রাখুন 0 মানে হয়ত জানেন না
অথবা এটা মানে কিছু ভুল হয়েছে?
আমরা যে সব শূন্য মানে কিছুই উৎপন্ন হত সম্মত আছে,
কোন প্রকৃত ঠিকানা উৎপন্ন হত.
এখন, এখানে আমি আমার আমি মানুষের প্রচল করছি প্রধান অবলম্বন 1 থেকে ফিরে
যদি কিছু গোলমাল হয়.
কারন প্রধান এর ফিরতি প্রচল যাও 0 ফিরে যদি ভাল হয়,
1 অথবা অন্য কোনো মান যদি খারাপ.
কিন্তু GetString এবং কোনো ফাংশন যে মেমরি আয় শূন্য মধ্যে পুলিশ যদি কিছু যায় খারাপ.
>> ঠিক আছে. তাই দুর্ভাগ্যবশত, লাইন 27, এটা যদিও সুপার সহজ, সম্পূর্ণভাবে পংক্তিটি কপি করতে ব্যর্থ হবে.
কেন? আমরা এই হিসাবে অনুসরণ করে দেখতে পারেন.
আমি লাইন 27 সালে গুলি করে তার একটি কপি এবং এটি তৈরীর কলিং টন করা দাবি করছি.
তাই আমি জিজ্ঞাসা 2 স্ট্রিং এই সময় ব্যবহারকারীর জন্য না; আমি শুধু গুলি মান বলছে
টন ভাল হিসাবে করা করা উচিত.
তাই এখন মাত্র পংক্তির মধ্যে প্রকট কিভাবে এই ভাঙা হয়, 29 অনওয়ার্ড কি আমি করছেন?
প্রথম আমি যদি টন দৈর্ঘ্য 0 থেকে চেকআউট করছি.
কিছু আছে স্ট্রিং আছে. ব্যবহারকারী ইন কিছু টাইপ করা
32 করছেন লাইন দৃশ্যত, কি?
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> রাইট. আপনি কি বলেন, আমি এটা করছে থেকে ধরনের এটি আবিষ্কার করতে পারেন.
কিন্তু টেকনিক্যালি কি, এই করছে? টন [0] প্রতিনিধিত্ব করে কি?
[ছাত্রদের] zeroth অক্ষর. >> [Malan] zeroth অক্ষর.
অথবা, আরো মানুষের মত, টন প্রথম অক্ষর, যাই হোক না কেন যে হয়, H হয়ত এই কেস.
এবং toupper আছে কি বলছেন. এটা টন র zeroth অক্ষর capitalizes এবং তা পরিবর্তন করা.
তাই এই অর্থ টন র zeroth অক্ষর নিতে, এটি বড়হাতের,
এবং এটা করা যে একই অবস্থানে ফিরে.
সুতরাং যদি আমি ছোট হাতের মধ্যে হ্যালো টাইপ করুন, এই ছোট হাতের অক্ষর ব্যবহার জ একটি মূলধন এইচ পরিবর্তন করুন
কিন্তু সমস্যা হল 35 এবং 36 কি আমি কি আমাদের সম্পর্কে গুলি এবং টন জন্য প্রিন্ট আউট লাইন থাকে.
এবং কি কি আপনার দলা?
আমি কি আসলে আমাকে যদি হ্যালো আমি সব ছোট হাতের অক্ষর ব্যবহার টাইপ দেখতে যাচ্ছে?
যাচ্ছে কি পেতে মুদ্রিত যাও এর? >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> কি যে?
[ছাত্রদের] বিগ H ও বিশ্রাম ছোট. >> বড় H ও বিশ্রাম ছোট যার জন্য, গুলি বা টন?
উভয় [ছাত্রদের]. >> দুটোই. ঠিক. সুতরাং আসুন এখানে কি হচ্ছে দেখতে.
>> আমাকে এগিয়ে যান এবং এই সঙ্কলন. এটি copy1, তাই copy1 করা. ঠিক আছে.
ইন জুম সম্পর্কে এগিয়ে যান এবং copy1 চালানো, লিখুন, কিছু বলুন যাক: হ্যালো মধ্যে ছোট আকারের.
এটা কপি মূলধনী, কিন্তু এটি আপাতদৃষ্টিতে মূল মূলধনী হিসাবে ভাল,
কারণ কি এখন এই গল্পের মধ্যে কি হবে?
লাইন 27 ইঞ্চি আমি স্ট্রিং অনুলিপি করা হবে বলে মনে হচ্ছে আসলে না,
কিন্তু যদিও intuitively আপনি যে ক্ষেত্রে আশা করা হতে পারে,
যদি আপনি এই ছবি আমার মনে হয়, আমি সত্যিই কি পেরেছেন?
ছবি অর্ধেক হয় একই.
সুতরাং এর মধ্যে ফিরে সময় গুটানো দেওয়া যাতে এখনো টন বিবরণ মধ্যে বিদ্যমান নেই.
S গল্পে, কিন্তু বিদ্যমান let এর এই সময় ছোট হাতের অক্ষর হ্যালো করতে পারেন.
সুতরাং সম্পর্কে স্থির করা যাক কি আসলে আমি টাইপ ইন
এই ক্ষেত্রে আমরা এখানে জ ই ঠ-l-o আছে.
আমরা অক্ষরের একটা ক্রম হিসাবে এটি আঁকা হবে, এখানে আমার বিভাজক রেখা করা এবং আমার \ 0.
তাই এই হল যেখানে আমরা 24 পর মাধ্যমে যত তাড়াতাড়ি লাইন 1, বা দিতে নিতে, মৃত্যুদন্ড কার্যকর আছে.
এটা আমার মেমরি ছবি.
আমি যখন লাইন 27 পেতে পারেন, কি হয়?
ঠিক আগের মতই, আমি একটি পয়েন্টার, যা আমি এই হিসাবে বর্গক্ষেত্র আঁকতে করব.
এটা টন বলা হচ্ছে. এবং কি এর ডিফল্ট মান? কে জানে? কিছু আবর্জনা মান.
>> তাই আমি বিমূর্ত যে দূরে হিসাবে একটি প্রশ্ন চিহ্ন পাবেন.
এবং যত তাড়াতাড়ি লাইন 27 ডান পাশ করুন, আমি কি টন এর ভিতর am নির্বাণ?
একই জিনিস গুলি মধ্যে যে.
তাই আপনি যদি একটি মুহূর্ত জন্য আমরা তীর এই বিমূর্ততা সরিয়ে আমরা বলতে,
ওহ, এই মেমরি লোড ঠিকানা 123, যখন আপনি টন গুলি, সেমিকোলন পায়,
আপনি আক্ষরিক 123 করছি এখানে দিচ্ছি.
এখন যদি আমরা আমাদের বিশ্বের ধরনের প্রক্রিয়া সহজ আবার ছবি সহ,
আপনি কি সত্যিই করেছেন ঠিক হয় আপনার বিশ্বের অন্য তীর যোগ
যে টন থেকে একই সঠিক স্ট্রিং এর প্রতি নির্দেশ করে.
সুতরাং যখন লাইন 31 এবং 32 এ আমি আসলে টন [0] পরিবর্তন সম্পর্কে যান,
কি টন [0] এখন সঙ্গে দৃশ্যত সমার্থক? গুলি [0]
তাই যে সমস্ত যে ঘটছে.
এবং যদিও এই ধরণের মনে একটু কম স্তর এবং গোপনীয়
এবং এই সাজানোর সম্ভবত intuitively ঠিক এই কাজ করেছি উচিত ভালো মনে -
আমি আগে করেছি জিনিস কপি করেন এবং এটা কাজ -
যদি আপনি আসলে কি সত্যিই একটি স্ট্রিংটি আমার মনে হয়, এটা একটি গৃহস্থালি *.
ভাল, কি হল? এটা কিছু চরিত্রের ঠিকানা.
তারপর হয়তো আরো ইন্দ্রিয় তোলে যে আপনি যখন কোনো কিছু করতে চেষ্টা করুন
সুপার আপাতদৃষ্টিতে ভালো সহজ, আপনি সমস্ত করছেন সেটি একটি অনুলিপি মেমরি ঠিকানা.
আপনি স্ট্রিং নিজেই সঙ্গে কিছু করছি আসলে করছেন না.
সুতরাং এমনকি আপনি যদি কোন ধারণা আছে কিভাবে আপনি কোড মধ্যে এই সমস্যার সমাধান করবে,
উচ্চ স্তর ধারণার,, আমরা কি করতে হবে না, যাতে তোমাকে s এর অবিকল নকল করা, দৃশ্যত?
হাঁ. >> [ছাত্রদের] এটি একটি নতুন অবস্থান দিন? >> যথাযথভাবে.
>> আমরা একটি নতুন অবস্থান দিতে টন প্রয়োজন.
আমরা একরকম এমন একটি বিশ্বের কথা আমরা একটি মেমরি নতুন চাঙ্গড় পেতে তৈরি করতে হবে,
যা শুধু স্বচ্ছতা দোহাই জন্য আমি অধিকার এই নীচে, কিন্তু আঁকা তা ওখানে না করার প্রয়োজন হবে.
কিন্তু একই সাইজ করা প্রয়োজন, তাই আমি এই একই স্থানে উলম্ব রেখা আঁকা হবে.
এটা যদি এই সূক্ষ্ম প্রথমে সব আবর্জনা. কি ছিল কে জানে?
কিন্তু ধাপ 1 যাও যাও স্মৃতি হিসাবে সম্পর্কে দিতে হবে যাচ্ছে হিসাবে আমি প্রয়োজন হয়
হ্যালো একটি কপি মাপসই তারপর, চিন্তা কিভাবে জ এখানে কপি এখানে ই,,
ঠ এবং এখানে যাতে ঘোষণা.
কিন্তু ইতিমধ্যে এই সামান্য একটি সুস্পষ্ট এমনকি যদি বিস্তারিত কিছু এখনও বিমূর্ত বোধ করা উচিত.
এই মধ্যে এই পংক্তিটি কপি করুন, এটি শুধু একটি লুপ বা যখন একটি লুপ এর জন্য
বা কিছু একটা হবে যার সাহায্যে আপনি সমস্ত আরো পরিচিত হয়ে করেছি.
তাই আসুন এই চেষ্টা. আমাকে copy2.c ঢোকা.
Copy2.c ইন জন্য আমরা 27 লাইন ছাড়া প্রায় একই প্রোগ্রাম আছে.
এটা একটু জটিল দেখায়, কিন্তু যদি আমরা টুকরা দ্বারা এটি ভেঙ্গে টুকরা,
বাম দিকের সাইড একই.
চর * টন মেমরির মধ্যে এই জিনিস তৈরি করে, একটি প্রশ্ন চিহ্ন যদ্যপি
কারণ আমরা কোন ধারণা আছে কি ডিফল্ট আছে.
ডান দিকে এখন আমরা একটি নতুন ফাংশন, malloc করছেন উপস্থাপক,
জন্য মেমরি বরাদ্দ করা, মেমরি সম্পর্কে দিতে,
এবং দৃশ্যত: এটি লাগে কতগুলি আর্গুমেন্ট, কতগুলি বন্ধনীর ভিতরে জিনিস?
আমি 1 এবং 2 murmurings শুনেছেন, কিন্তু এটি শুধুমাত্র 1.
কোন কমা, যার মানে শুধুমাত্র প্রথম বন্ধনী ভিতরে 1 জিনিস আছে আছে.
যদিও অন্যান্য বন্ধনী আছে, আমাকে হাইলাইট
এর দূরতম বন্ধনীর ভিতরে কি, এবং এটি এই অভিব্যক্তি:
(Strlen (গুলি) + 1 টি) * sizeof (গৃহস্থালির কাজ করা).
তাই আপনি যদি প্রকৃতপক্ষে আমরা মনে করি এই মাধ্যমে, এই সম্পর্কে s এর দ্বারা দিতে বলছে না.
আমি কেন যদিও,, দৈর্ঘ্য 1 সম্মুখের যোগ? >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া]
ঠিক. আমরা লেঙ্গুড় এই পলায়ন জন্য স্থান, ষষ্ঠ যে কোন অক্ষর ইংরেজি অর্থ আছে প্রয়োজন
কিন্তু বিশেষ কর্মসূচি অর্থ নেই.
>> সুতরাং আমরা যে জন্য একটি + 1 টি প্রয়োজন কারণ strlen আয় দ্বারা মানুষের প্রত্যাশা,
হ্যালো বা 5, এটি অতিরিক্ত নাল অক্ষর আপনাকে দেয় না.
তাই স্বয়ং আমি + 1 এই সঙ্গে যুক্ত.
এবং তারপর এই, র * আকার (গৃহস্থালির কাজ), আমরা এই আগে দেখা যায় না.
এটি টেকনিক্যালি একটি ফাংশন না.
এটা একটা বিশেষ অভিব্যক্তি যে শুধু আপনি বলে কিছু তথ্য টাইপ কি আকার একটি কম্পিউটারে হয়
বাস্তবতা কারণ, আমাদের কিছু 32 বিট কম্পিউটারে আছে.
আমি বাড়িতে একটি চমত্কার পুরোনো কম্পিউটার আছে, এবং এটি শুধুমাত্র 32 বিট ব্যবহার করে পয়েন্টার প্রতিনিধিত্বকারী.
এবং তাই যদি আমি একটি ডাটা টাইপ মাপ দিত, তাহলে 32 বিট হতে পারে.
কিন্তু যদি আমি আমার নতুন অভিনব কম্পিউটার ব্যবহার করছি, আমি 64 বিট মান ফিরে পেতে পারে
জন্য একটি ঠিকানা ভালো কিছু.
তাই এই ক্ষেত্রে, শুধু সুপার নিরাপদ করা, আমরা হার্ড কোড কিছু ভালো যাচ্ছে না থাকেন -
ভাল, কি একটি গৃহস্থালি অনুযায়ী কি আমরা এতদূর বলেন করেছি আকার?
আমরা প্রায় কাছাকাছি করেছি মৌখিকভাবে বলেন যে এটা 1 বাইট, এবং যে বোর্ড জুড়ে বেশ অনেক সত্য.
কিন্তু আবার, অনুমানের খারাপ হতে থাকে.
তারা বগী সফ্টওয়্যার হতে যদি মানুষ উপায়ে আপনি করতে চানও নি আপনার সফটওয়্যার ব্যবহার করতে.
সুতরাং let এর বিমূর্ত এই মাত্র দূরে এবং আরো জেনেরিক বলে
আমি এই মেমরি অনেক অংশ প্রয়োজন
এবং মেমরি প্রতিটি খণ্ড সমতুল্য একটি অক্ষর মাপ হতে হবে,
আসলে এই ক্ষেত্রে সমান 1 যাও যা, কিন্তু এটি একটি লেখার আরো জেনেরিক পন্থা.
তাই আপনি যদি শব্দ হয় হ্যালো, কত বাইট malloc হ্যালো জন্য দৃশ্যত জন্য বরাদ্দ করা?
[ছাত্রদের] ছয়. >> ছয়. ঠিক হিসাবে অনেক হিসাবে আমরা পর্দায় প্রশ্ন চিহ্ন আছে.
এবং তারপর নিতে একটি GetString আপনার বোঝার উপর ভিত্তি করে এখন অনুমান
না কি সম্ভবত malloc ফিরে? >> [ছাত্রদের] একটি ঠিকানা.
কি একটা ঠিকানা? মেমরির প্রথম খণ্ড.
>> আমরা কোন ধারণা আছে কি নেই কারণ অন্য কিছু ফাংশন
হয়েছে এই মেমরি থাকতে পারে পূর্বে ব্যবহার করে.
কিন্তু GetString ভালো malloc,, মেমরির প্রথম বাইট ঠিকানা ফেরত্
যে এটা আপনার জন্য সেট করেনি একপাশে.
তবে, এটি কি না তা এই ফাঁকা মধ্যে একটি backslash নাল অক্ষর দিয়ে ভরাট করা হয়
কারণ এটি সক্রিয় আউট আপনি কিছু বরাদ্দ malloc ব্যবহার করতে পারেন: ints, স্ট্রিং, অ্যারে,
floats, ছাত্র স্ট্রাকচার.
আপনি malloc সম্পূর্ণভাবে জেনেরিক ব্যবহার করতে পারেন.
অথবা এটা না যে আপনি কি করছেন জন্য মেমরি বণ্টন জানা নেই যত্ন.
সুতরাং এটি একটি \ 0 রাখা malloc জন্য presumptuous হবে
মেমরি প্রতি চাঙ্গড় শেষে এটি আপনাকে ক্রমাগত এর
কারণ এই \ 0 জিনিস শুধুমাত্র স্ট্রিং জন্য একটি প্রচল.
এটা ints জন্য ব্যবহৃত না, এটা floats জন্য ব্যবহৃত না, এটা ছাত্র জন্য ব্যবহৃত না.
এবং তাই malloc সঙ্গে gotcha যে বোঝা আপনার উপর সম্পূর্ণরূপে প্রোগ্রামার
কিভাবে আপনি অনেক বাইট বরাদ্দ মনে রাখবেন এবং কখনও লুপ জন্য না একটি ব্যবহার
অথবা যখন একটি লুপ এবং মেমরি চাঙ্গড় আপনি দিয়েছি হয়েছে সীমানা গত যান.
অন্য উপায়, রাখুন যত তাড়াতাড়ি আপনি মেমরি বরাদ্দ করা,
আপনি অপারেটিং সিস্টেম না চাইতে পারেন, উপায় দ্বারা উহু,, কিভাবে মেমরি চাঙ্গড় বড় ছিল এই?
এটা আপনার সম্পূর্ণ এর যদি আপনি যে মান প্রয়োজন মনে রাখবেন.
>> সুতরাং এর দেখতে দিন কিভাবে আমি এই মেমরি ব্যবহার করতে এগিয়ে যান.
লাইন 28 এবং 29 ইঞ্চি কেন আমি এই am করছেন?
শুধু মোট সদ্বিবেচনা চেক.
যদি এমন কিছু কিছু ভুল, আমি কিছু ছবি পরিমাণ মেমরি জন্য জিজ্ঞাসা
অথবা আমি এতো কিছু কম্পিউটারে আছে চলমান যে শুধুমাত্র পর্যাপ্ত মেমরি নেই,
যে মত, আমি নাল জন্য চেক কমপক্ষে চান.
প্রকৃতপক্ষে, অধিকাংশ কম্পিউটারে, মায়া দিতে হবে যে প্রতি প্রোগ্রাম
আপনার RAM-র সম্পূর্ণতা ব্যবহার করতে পারেন,
কিন্তু তথাপি, যদি ব্যবহারকারী কিছু ছবি হয়ত দীর্ঘ স্ট্রিং এ ধরনের কারণ তারা খুব খারাপ লোক
এবং প্রকৃতপক্ষে তারা তা আপনার প্রোগ্রাম বা হ্যাক বিপর্যস্ত হতে চেষ্টা করছি,
আপনি অন্তত malloc ফেরত মান পরীক্ষা করতে এবং তা সমান নাল.
এবং যদি তা আছে, যাক এর সঠিক কারণ আমি এখন প্রস্থান করার জন্য কি যে ক্ষেত্রে কি না জানি না.
আমি কিভাবে পংক্তিটি কপি? কয়েক উপায়ে এই কাজ আছে.
Str সি ইন ফাংশান উপস্থিত করা কপি আছে, কিন্তু এটি অতি সহজ জন্য আমাদের এই সেকেলে উপায় না.
>> প্রথম আমাকে জিনিসটা কি গুলি দৈর্ঘ্য.
আমি লুপ এই থাকতে পারে করা কিন্তু পরিবর্তে আমি স্বচ্ছতার জন্য এটা করা আউট এখানে.
তাই এখন n সঞ্চয় মূল স্ট্রিং এর দৈর্ঘ্য, যা আপাতদৃষ্টিতে হল 5.
তারপর আমার জন্য লুপ আমি 0 থেকে iterating আপ n যাও করছি,
এবং প্রতিটি পুনরাবৃত্তির আমি নির্বাণ করছি গুলি [i] টন ভেতরে [i].
যাতে আমি কি আমার 2 আগে স্ট্রিং নির্দেশ আঙ্গুলের সঙ্গে উহ্য.
হিসাবে লুপ জন্য এই ভালো iterates, আমি এখানে মধ্যে জ অনুলিপি করা যাচ্ছে না,
এখানে এখানে মধ্যে, ঠ মধ্যে ই কারণ এই গুলি, এই হল টন.
লাইন 35 এবং তারপর সর্বশেষে, কেন আমি এই am করছেন?
আমি নিশ্চিত যে আমি পংক্তি টন শেষ করছি করা প্রয়োজন.
আর আমি এই ভাবে এটি সুপার হতে স্পষ্ট.
কিন্তু কেউ উত্থাপন করা,, যদি পারে, একটি এই কাজ করার বিভিন্ন উপায়.
আমি লাইন 35 সত্যিই প্রয়োজন হয় না. অন্য উপায় নেই এই কাজের জন্য.
হাঁ. >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> বলুন এটা জোরে.
[ছাত্রদের] এর চেয়ে কম বা সমান. >> যথাযথভাবে.
আমরা শুধু বলতে চেয়ে কম বা সমান হবে, যা সাধারণভাবে খারাপ হয়েছে পারে
কারণ প্রায় সবসময় যখন আমরা জিনিস আমরা বেড়ে চলেছে সেটি একটি সমান পর্যন্ত যান
আমরা 1 ধাপে যেতে খুব বেশী দূরে না.
কিন্তু মনে রাখবেন কত বাইট, আমরা বরাদ্দ করা হয় নি?
আমরা s এর strlen বরাদ্দ 6 মোট জন্য, তাই 5 + 1 টি.
তাই এই ক্ষেত্রে আমরা ভালো কিছু করতে পারে
যাতে আমরা খুব শেষে অনুলিপি করছি শুধুমাত্র হ্যালো না কিন্তু \ 0.
পরিবর্তে, আমরা একটি ফাংশন বলা str কপি ব্যবহার strcpy, হতে পারে,
কিন্তু যে প্রায় হিসাবে অনেক মজা হবে না.
কিন্তু যে সব এটি ফণা নীচে আছে.
তারপর সর্বশেষে, আমরা আগে হিসাবে একই জিনিস করে.
আমি টন এবং তারপর পুঁজিতে আমি দাবী করে যে এই মূল কপি এবং সেই মতো দেখায় বলে মনে হচ্ছে.
তাই আসুন এখন এই চেষ্টা. আমাকে এখানে যান. Copy2 না. আমরা এবং জুম copy2 রান করব.
আমি হ্যালো মধ্যে ছোট হাতের মধ্যে টাইপ করে যাচ্ছে, এবং করছি প্রকৃতপক্ষে আমি হ্যালো ছোট হাতের অক্ষর মূল হিসাবে পেতে
কিন্তু কপি জন্য হ্যালো মূলধন.
কিন্তু আমি এখনও কাজ করছি না. আমি এখানে 1 জিনিস শেষ করতে হবে.
46 এবং 47 পরিষ্কারভাবে মেমরি freeing, কিন্তু কি যে আসলে মানে?
Am আমি কি করছেন, আপনি কি মনে করেন, দ্বারা লাইন 46 এবং লাইন 47 কলিং না?
কি প্রভাব আছে? হাঁ.
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> যথাযথভাবে.
>> আপনি কেবল অপারেটিং সিস্টেম বলছে, হেই, এই মেমরির জন্য ধন্যবাদ.
এখন আপনি অন্য কারোর জন্য এটি ব্যবহার করতে পারেন.
এবং এখানে একটা আবর্জনা মান নিখুঁত উদাহরণ.
আমি ঠিক আছে এই মেমরি লিখে 2 জায়গায় হ্যালো শব্দটি ব্যবহৃত,
এখানে, এখানে, এখানে, এবং এখানে.
তাই এই জ ই ঠ-l-o-\ 0.
কিন্তু তারপর আমি লাইন 46 এবং লাইন 47 কল, এবং আপনি কি জানেন যে ছবি শর্তাবলী সেখানে কি হবে?
বাস্তবিক, অপেক্ষা করুন, এই ছবি পুরানো এক.
একবার আমরা কপি করা, প্রকৃতপক্ষে এই লোক প্রতি নির্দেশ করা হয় এখানে,
তাই কিছু সংখ্যা ও অপসারণ শুধু বিমূর্ত দূরে আবার হিসাবে আমাদের তীর.
কি এই ছবি সালে যখন আমি বিনামূল্যে কল?
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> এমনকি নেই.
যদি আমি কল গুলি টন এবং বিনামূল্যে - একটি কৌতুক ধরনের প্রশ্ন - এই ছবি নয় পরিবর্তন
গুলি কলিং এবং কলিং কারণ শুধু টন বলে অপারেটিং সিস্টেম,
হেই, আপনি আবার এই মেমরি ব্যবহার করতে পারেন, কিন্তু এটি এই নাল না পরিবর্তন
অথবা কিছু বিশেষ অক্ষর, এটি এই পরিবর্তন হয় না,
এটি জ বা ই অথবা অন্য কিছু হয় জায়গায় ঠ বা ঠ ণ বা পরিবর্তন করবেন না.
ইন ছবি শর্তাবলী, যত তাড়াতাড়ি হিসাবে আপনি বিনামূল্যে, কিছুই পরিবর্তন কল.
এবং সেখানে আবর্জনা মান মূল কারণ মিথ্যা যদি আমি পরে এই প্রোগ্রাম
GetString বা malloc বা ভালো কিছু সঙ্গে আরো মেমরি জন্য একটি অপারেটিং সিস্টেম যে জিজ্ঞাসা
এবং অপারেটিং সিস্টেম বলছেন, নিশ্চিত, আমি মেমরি 12 বাইট কেবল কাটা আপ আছে,
এই ব্যবহার, আপনি যা করতে যাচ্ছি হস্তান্তর করা যাও?
আপনি মেমরি অঞ্চলে যা সাধারণত আমরা আঁকতে চাই হস্তান্তর করা চলুন
সঙ্গে প্রশ্ন চিহ্ন, কিন্তু কি, সেই সব প্রশ্ন চিহ্ন?
তারা জ ই ঠ-l-ণ, জ ই ঠ-l-ণ করা ঘটেছে.
এগুলি আমাদের নতুন আবর্জনা মান হিসাবে শীঘ্রই হিসাবে আপনি যে মেমরি মুক্ত করা হয়.
>> এখানে এখন পর্যন্ত একটি বাস্তব জগতে খুব সংশ্লেষ.
এই RAM-র সাথে কি ঘটবে, কিন্তু আপনার কম্পিউটার
আসলে ডিস্ক সঙ্গে একই জিনিস করে.
আমরা এই সম্পর্কে বিশেষ করে ভবিষ্যতে সমস্যা সেট ফরেনসিক উপর গুরুত্ত্ব দেয় সাথে আলাপ করব.
কিন্তু আসলে কি হবে যদি আপনি কিছু সংবেদনশীল আপনার ডেস্কটপে আর্থিক ফাইল আছে
অথবা কিছু অসম্পূর্ণ কোন JPEG এবং আপনি আপনার ট্র্যাশ মধ্যে টেনে আনুন,
যখন আপনি ট্র্যাশ বা রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা বিন মধ্যে টেনে আনুন কি?
আপনি জানতেন কি বিষয়ে কথা ছিল. [হাস্য]
যখন আপনি আপনার রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা বিন বা ট্র্যাশ করতে পারেন যে প্রমাণ করেছি টেনেছেন কি হবে?
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া]
ওয়েল, তাই সতর্ক থাকুন. যখন আপনি না যে কি হবে?
সংক্ষিপ্ত উত্তর কিছুই, ডান?
নকশা বা সংবেদনশীল ফাইল এখনও ঠিক হয় বসা আপনার হার্ড ড্রাইভে আছে কোথাও.
আমাদের অধিকাংশ অন্তত হার্ড উপায় যে আপনার ট্র্যাশ খালি করতে শিখেছি আছে
প্রকৃতপক্ষে আপনার বা রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা বিন ফাইল মুছে দিন.
এবং প্রকৃতপক্ষে, যখন আপনি ডান ক্লিক করুন অথবা আপনার ট্র্যাশ ক্লিক নিয়ন্ত্রণ করতে পারেন
অথবা ফাইল, ট্র্যাশ খালি বা যাই হোক না কেন চয়ন
এবং প্রকৃতপক্ষে আপনি ট্র্যাশ খালি করতে রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা বিন, কি আসলে এই ছবি থাকে তাহলে সেটা হয় বা হতে পারে?
আরো কিছুই. সুতরাং ডিস্কের আসলে কিছুই ঘটবে.
>> এবং যদি আমরা অস্থায়ীভাবে এবং অপ্রাসঙ্গিক হত্তয়া লিখুন - কেবল ব্যবহার I'll এই ফিরে.
তাই এখন RAM-র বিবরণ, যা যেখানে প্রোগ্রাম বর্তমান থেকে পরিবর্তন করা হয়
যখন আপনি তাদের চলমান ডিস্কে, করছি, যা যেখানে তারা দীর্ঘ মেয়াদী সংরক্ষণ করা হয়
এমনকি যখন ক্ষমতায় যায় এখন জন্য, আউট - এবং আমরা এই যাও ফিরে আসবে ভবিষ্যতে করব -
এর সাজা দেওয়া ঠিক যে এই হার্ড আপনার কম্পিউটারের ড্রাইভ ভিতরে উপস্থাপন
কারণ তারা ফিরে দিনের ব্যবহৃত অনেক ফ্লপি ডিস্কের মত বিজ্ঞপ্তি ডিস্ক হতে,.
তাই আপনি যদি কিছু সংবেদনশীল এক্সেল ফাইল আছে, এটা মেমরির এই খণ্ড পর্যন্ত সময় নিতে পারে
আপনার কম্পিউটার এর ডিস্ক, এবং আমি একই অবাধ 1s এবং 0 সেঃ অঙ্কন করছি.
আপনি যখন আপনার ট্র্যাশে যে ভালো ফাইল টেনে আনুন বিন বা রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা যেতে পারে,
আক্ষরিক কিছুই ঘটে কারণ ঠিক আপেল এবং মাইক্রোসফট সিদ্ধান্ত নিয়েছেন
রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা আবর্জনা বিন সত্যিই শুধু অস্থায়ী প্লেসহোল্ডার এবং পারেন.
হয়তো অবশেষে অপারেটিং সিস্টেম আপনার জন্য, কিন্তু খালি করতে হবে, বিশেষত এটা কিছু না,
অন্তত যতক্ষণ না আপনি ঐ স্থানটির উপর সত্যিই কম.
>> যাইহোক, যখন আপনি খালি বা ট্র্যাশ খালি বিন রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা যেতে,
একইভাবে, এই ছবি কিছুই ঘটে.
যে সমস্ত ঘটনা হবার অন্যত্র আপনার কম্পিউটার, টেবিল কিছু আছে.
একটা Cheat শীট যে বলছেন যে, এর কথা বলা যাক, resume.doc মত ধরণের,
তাই একটি মাইক্রোসফট ওয়ার্ড ফাইলটি আপনার হার্ড ডিস্কের অবস্থান 123 এ বাস ব্যবহৃত আপনার সারসংকলন,
মেমরি এবং না না উপস্থিত RAM-র কিন্তু আপনার হার্ড ডিস্ক,
এবং আপনার অসম্পূর্ণ 456 এ কোন JPEG জীবনে, এবং আপনার এক্সেল ফাইল 789 এ বা যেখানেই বসবাস করেন.
যখন আপনি আসলে ট্র্যাশ বা রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা বিন খালি দ্বারা ফাইল মুছে দিন,
এই ছবি পরিবর্তিত না হয়. 0 সেঃ আপনার হার্ড ড্রাইভে এবং 1s কোথাও না যেতে.
কিন্তু এই টেবিল, এই প্রকারের সামান্য ডাটাবেস, পরিবর্তন আছে.
আপনি যখন আপনার সারসংকলন মুছে দিন, এটা হিসাবে যদিও কিছু অর্থে ফাইল মুছে ফেলা হয়,
কিন্তু সব কম্পিউটার না হয় যেখানে যে জিনিস আপনার হার্ড ড্রাইভের জীবন ভুলবেন না.
0 সেঃ এবং 1s যে আপনার সারসংকলন বা এই ফাইল অন্য যে কোন রচনা অক্ষত.
>> তাই আপনি যদি এই দূর্ঘটনাক্রমে হয়নি, এখনও আছে একটি অ শূন্য সম্ভাবনা
যে আপনি আপনার তথ্য পুনরুদ্ধার নর্টন ইউটিলিটি বা কিছু বাণিজ্যিক সফটওয়্যার ব্যবহার করতে পারেন
জীবনে যার উদ্দেশ্য 0 সেঃ এবং 1s যে ধরণের আছে এতিম হয়েছে খুঁজতে হয়,
বিস্মৃত এখানে কিন্তু এখানে বাকি আছে, যাতে আপনি আপনার তথ্য ফিরে পেতে পারেন.
বা পুলিশ বা FBI সঙ্গে ফরেনসিক investigators আসলে একটি হার্ড ডিস্ক লাগবে
এবং প্রকৃতপক্ষে 0 সেঃ এবং 1s যে JPEGs মত চেহারা এক্সেল ফাইল এর মতই, চেহারা ধরনে জন্য দেখুন,
এবং তাদের যে উপায় এমনকি যদি তাদের কম্পিউটার বিস্মৃত হয়েছে পুনরুদ্ধার করা.
সুতরাং শুধুমাত্র সত্যিই উপায় তথ্য, মুছে দিন হিসাবে আমরা ভবিষ্যতে আলোচনা করব,
যাও বা মাজা দ্বারা ফাইল অথবা হার্ড ডিস্ক নিশ্চিহ্ন করা হল -
আপনি সত্যিই 0 সেঃ এবং 1s পরিত্রাণ পেতে পারে না
কারণ অন্যথায় আপনি একটি গিগাবাইট হার্ড ড্রাইভ দিয়ে শুরু চাই
এবং আপনি একটি megabyte হার্ড ড্রাইভ দিয়ে শেষ পর্যন্ত যদি ক্রমাগত আপনি মুছে ফেলা হয়েছে চাই,
আক্ষরিক, 0 সেঃ এবং 1s.
আপনি কি করবেন আপনি যদি সত্যিই আপনার ট্র্যাক আবরণ চেয়েছিলেন হবে
এবং মৌলিক সমস্যা হল এখনও সেখানে 0 সেঃ এবং ডিস্কে 1s?
আমি কাউকে gesticulating যে আপনি শারীরিকভাবে ডিভাইস বিরতি দেখতে চাই. যে কাজ হবে.
[হাস্য] কিন্তু এর একটা ব্যয়বহুল সমাধান ধরনের, কি অধিক যুক্তিসঙ্গত হবে?
হাঁ. >> [ছাত্রদের] তাদের ওভাররাইট করুন. >> কি তাদের সঙ্গে ওভাররাইট? >> [ছাত্রদের] অন্য তথ্য.
অন্য তথ্য. আপনি মাত্র 0 সেঃ অথবা 1s বা সমস্ত 0 সেঃ, সব 1s সঙ্গে আপনার ডিস্ক মুছে ফেলা যাবে.
>> এবং যে সত্যিই কি সফ্টওয়্যার কিছু আছে.
আপনি সফটওয়্যার কিনতে এমনকি বা মুক্ত সফটওয়্যার পেতে পারেন,
এবং এমন ম্যাক OS এই দিন নির্মিত, কম তাই উইন্ডোজ,
নিরাপদভাবে নিশ্চিহ্ন করার দক্ষতা.
বাস্তবিক, যদি আপনি সব রান বাড়িতে আজ যদি আপনি চান একটি ম্যাক আছে এবং এই কাজের জন্য,
যদি আপনি পেয়েছেন আপনার ট্র্যাশ মধ্যে কিছু উপাদান আপনার, ট্র্যাশ খালি করতে পারবেন নিরাপদ না,
যা আছে ঠিক যে.
বরং কেবল এখানে ফাইল মুছে ফেলুন, এটি 0 সেঃ এবং 1s এখানে নিশ্চিহ্ন না,
বরং, এটা পরিবর্তন উদাহরণস্বরূপ তাদের সব,, 0 সেঃ এবং বিন্দু, বিন্দু, বিন্দু যাও.
সুতরাং আপনার ভবিষ্যতে psets এক আসলে ইচ্ছাকৃতভাবে তথ্য পুনরুদ্ধার করতে হবে -
ফটোগ্রাফ যে আমরা মানুষ, স্থান, ক্যাম্পাস এবং জিনিস গ্রহণ করেছেন
যার জন্য আমরা একটি ডিজিটাল ক্যামেরা এর মেমরি কার্ড ফরেনসিক চিত্র তৈরি করতে পারবেন,
যা সঠিক একই ধারণা - এবং আপনি চ্যালেঞ্জ করা প্রকৃতপক্ষে খুঁজে পাবেন
ধরণগুলির আপনার হার্ড ড্রাইভের প্রতিনিধিত্বকারী JPEGs,
আমি যে অনেক প্রাক্তন ছাত্র যার ইমেল পড়া কয়েক সপ্তাহ আগে কি
তার বোন এর ফটোগ্রাফ পুনরুদ্ধার করা.
কেন একটি 5 মিনিটের বিরতি নিতে আমরা এখানে না, এবং আমরা মেমরিতে আরো সঙ্গে পুনরায় বিন্যাস করা হবে.
সুতরাং এখানে যেখানে জিনিসপত্র পেতে একটু মন-নমন, কিন্তু এটি একটি খুব শক্তিশালী পদক্ষেপ
দিকে এই সব আরও বুঝতে.
এখানে একটি প্রোগ্রাম নামক pointers.c.
এটা আজকের এর নমুনা কোড মধ্যে হয়.
উল্লেখ্য, প্রথম কয়েক লাইনে, 22 মাধ্যমে 19, সমস্ত আমরা করছেন হয় GetString মত
এবং একটি ঠিকানা ফিরে, গুলি মধ্যে এটি সংরক্ষণ.
অত: পর pset এমনকি 3 জন্য যদি আপনি চান কিন্তু pset 4 এবং উপর
যেখানে আপনি নিজে বন্ধ চাকার প্রশিক্ষণ নিতে শুরু করতে পারে,
কোনো কারণ যে স্ট্রিং আর অস্তিত্ব জাহির করা হয়.
এটা অবশ্যই ঠিক এর গৃহস্থালির কাজ শুরু * বলছে ঠিক আছে.
>> অনলাইন রেফারেন্স এবং একটি বই সরাইয়া হিসাবে, আপনি প্রায়ই পাশে তারকা পরিবর্তনশীল দেখতে পারেন.
এমনকি আপনি এটি উভয় পক্ষের প্রায় শূণ্যস্থান দেখতে হতে পারে.
যারা সমস্ত বৈশিষ্ট্যগুলি হল সঠিক.
এখন জন্য যদিও,, আমরা সুপার পরিষ্কার করা এই পদ্ধতির উপর প্রমিত করব
যে গৃহস্থালি * অক্ষর পয়েন্টার বলছে ভালো হয়.
এটা ডাটা টাইপ.
এবং তারপর পরিবর্তনশীল নামের এই ক্ষেত্রে হয় গুলি.
সুতরাং আমরা একটি স্ট্রিং অর্জিত করেছি এবং আমরা এটি গুলি নামক করেছি.
এবং তারপর নিচে এখানে লক্ষ্য করা যে আমি একটি কৌতুক সামান্য বিট আসলে করছি.
এই পয়েন্টার এরিথমেটিক, যা সুপার সহজ সাজানোর বলা হয়.
এটা মানে এবং পয়েন্টার নম্বর যোগ বিয়োগ.
কিন্তু প্রকৃতপক্ষে এই কাজ করে.
এই প্রোগ্রামটি দৃশ্যত স্ট্রিং গুলি যেমন শেষ ফলাফল যে লাইন প্রতি অক্ষর 1 ছাপে -
যাতে আমরা যেখানে এই যাচ্ছে, লুণ্ঠন করা পয়েন্টার, পয়েন্টার চালাতে পারেন, সম্পর্কে ইন জুম দিন
এখন হ্যালো এবং টাইপ লিখুন ভালো কিছু ঢুকা টাইপ সম্পর্কে
এবং এটি লাইন প্রতি অক্ষর 1 ছাপে.
আপ পর্যন্ত একটি দ্বিতীয় আগে, আমরা গুরুবন্ধনী স্বরলিপি সঙ্গে এই কাজ করে.
আমাদের জন্য একটি লুপ আছে এবং আমরা s এর printf করতে চাই চাই [i] এবং আমরা যে আবার এবং আবার এবং আবার চাই
সঙ্গে একটি প্রতিটি লাইন শেষে backslash হবে.
কিন্তু এই প্রোগ্রাম ভিন্ন. এই প্রোগ্রাম ব্যবহার করে গাণিতিক আক্ষরিক হয়,.
সুতরাং এখানে কি করছেন?
প্রথম সমস্ত, এমনকি আগে এই লুপ করুন, কি, ঠিক পরিষ্কার হবে, সে আসলে গুলি?
S হয়? >> [ছাত্রদের] একটি ঠিকানা. >> একটি ঠিকানা.
>> এবং এটা হ্যালো ক্ষেত্রে ঠিকানা,, যে শব্দ প্রথম অক্ষর, যা জ.
তাই এই গুলি বিশেষ উদাহরণ হয়,, জ ঠিকানা.
তাই এটা গুলি না মানে, তোমার?
ওয়েল, আমি 0 আরম্ভ লুপ জন্য এই সালে. আমরা অনেক সময় কাজ করেছি.
আমি স্ট্রিং এর দৈর্ঘ্য পর্যন্ত যান, দৃশ্যতঃ যাচ্ছে.
তাই এই লুপ প্রথম পুনরাবৃত্তির উপর, তোমার হয় সুস্পষ্টরূপে 0.
বরং, যে গুলি +0--এর সম্ভবত মাত্র গুলি - তাই এই অভিব্যক্তি গুলি + I বলছে না.
তাহলে এখানে * গুলি?
এখন আমরা সামান্য অন্যভাবে তারকা ব্যবহার করছেন.
আমাকে এগিয়ে যান এবং টন পরিত্রাণ পেতে কারণ আমরা টন এবং গুলি কপি সম্পর্কে কথা বলা শেষ করেছেন.
এখন আমরা শুধু একটি বিবরণ গুলি জড়িত জানাতে চান.
এই মুহূর্তে তাই, টাইপ স্ট্রিং থাকার পরে, আমাদের দুনিয়া দেখতেও বেশ ভালো তা আগে
শুধু গুলি জ ঠিকানা সংরক্ষণ এবং স্ট্রিং এ আরো সাধারণত প্রতি নির্দেশ হ্যালো.
এখন আমি যদি * পংক্তিটির মত একটি পংক্তি না (গুলি + i) এর এই চেষ্টা দিন.
সুতরাং * (গুলি + I). সম্পর্কে এই কারণ এটি 0 সহজতর করা যাক তাই, এই * (গুলি +0).
ওয়েল, কয়েক মিনিট অপেক্ষা করুন. আরও সহজ করে. এই * (গুলি).
অবশ্য, এখন প্রথম বন্ধনী হয় মূঢ় ধরনের, তাই এখন এর ঠিক * গুলি যাক.
তাই এই লুপ, যে যে লাইন হাইলাইট এর, 26 প্রথম পুনরাবৃত্তির,
বেশ অনেক এই মুদ্রণ যাও সমতুল্য.
* S এর ডাটা টাইপ কি?
এই প্রেক্ষাপটে, কারণ তারা পরবর্তী যাও নিজেকে গুলি করা হয়,
কিন্তু আরো নির্দিষ্টভাবে, কারণ আমরা নেই গুলি ঘোষণা করা হয়,
আমরা আর একটি পরিবর্তনশীল তৈরি না করে থাকেন, গৃহস্থালির কাজ করা * কোন লাইন 26 মধ্যে উল্লেখ করা আছে,
অভিব্যক্তি স্ট্রিং কোনো উল্লেখ নেই, শুধু আমরা একটি পরিবর্তনশীল নামক গুলি ব্যবহার করছেন,
এটি সক্রিয় আউট এখন তারকা আছে এবং স্পষ্টত কিছুটা ভিন্ন,, মানে বিভ্রান্তিকর.
* এখানে মানে গুলি ঠিকানা ও মুদ্রণ যেতে যাহা আছে.
সুতরাং এখানে গুলি হল, * গুলি হল - এখানে - ধরণের মত Chutes এবং Ladders, তীর অনুসরণ.
তাই এই গুলি *.
>> লাইন 26 মধ্যে যে লুপ প্রথম পুনরাবৃত্তির তাই কি মুদ্রিত পরার?
আমি মুদ্রণ% গ, ​​যা একটি অক্ষর জন্য প্লেসহোল্ডার আউট,
তারপর একটি একটি নতুন লাইন জন্য \ n. * (গুলি + I) যেখানে তোমার 0 শুধুমাত্র এই.
তাই গৃহস্থালির কাজ মধ্যে আমি% গ জন্য লিখুন? এইচ
ইন লুপ এর পরবর্তী পুনরাবৃত্তিতে - আপনি সম্ভবত দেখতে যেখানে এই যাচ্ছে করতে পারেন -
পরবর্তী পুনরাবৃত্তিতে হল সম্ভবত 1, তাই এই গুলি উপায় +1 টি,
এবং এখন আমি প্রথম বন্ধনী প্রয়োজন নেই কারণ এখন তারকা বলার প্রয়োজন
মেমরি ঠিকানা গুলি +1 যান.
গুলি কি? চলুন সময় ফিরে পাকানো এবং এই তীর এখন কোনো নিতেন আসলে সেটা না হয় আমাদের বলুন.
এর আরো ঠিক যে এই সংখ্যা 123 সংরক্ষণকারী হয় বলে
কারণ এই স্ট্রিং শুরু হ্যালো, এই হল ঠিকানা 123, এই হল 124, এবং তাই ঘোষণা.
তাই দ্বিতীয় পুনরাবৃত্তির যখন আমি গুলি +1 করতে বলছে করছি, ২ 123 +1 করতে বলছে যে মত,
124 অন্যথায় হিসাবে পরিচিত, তাই কি গৃহস্থালির কাজ দ্বিতীয় পুনরাবৃত্তির প্রিন্ট পরার?
মেমরি ঠিকানা 124 এ ই.
তারপর আবার +, 125, 126, 127, এবং সৌভাগ্যক্রমে এই লুপ স্টপ আগে আমরা এখানে
কারণ আমি strlen নিশ্চিত যে আমি খুব বেশী না গণনা করতে ব্যবহার করছি.
তাই খুব যে এটা.
আবার, এই মাত্র হিসাবে যদিও আমরা একটি সপ্তাহ আগে সম্পন্ন করেছে.
সম্পর্কে এটিতে নিচের লাইন লিখুন যাক যদিও আমরা উভয় না চান তাহলে.
এই যাও এখন অভিন্ন.
>> সুতরাং যদিও গুলি একটি স্ট্রিং হিসাবে আমরা করছি সপ্তাহের জন্য এটি কলিং, গুলি সত্যিই একটি গৃহস্থালি *.
তাই আপনি যদি আমরা সুপার মলদ্বারে হতে চান, এটা আসলে সঠিক নির্দিষ্ট অক্ষর লিখুন
এ ith অবস্থান এইসব সাংখ্যিক ঠিকানা এবং এই তারকা অপারেটর ব্যবহার করে,
কিন্তু অকপটে, এটা ঠিক তাই অনেক ক্লিনার. তাই এই খারাপ হয় না.
কোন কারণে 27 লাইন এখানে কাজ বন্ধ করার জন্য, কিন্তু 26 বৈশিষ্ট্যগুলি হয় একই,
এবং এটা ঠিক বৈশিষ্ট্যগুলি কারণে যে পর্যন্ত আমরা আলোচনা করছি জন্য একই.
এবং সর্বশেষে, 29 একটা ভাল অভ্যাস.
কলিং গুলি মুক্ত মানে হল যে এখন আপনি যে মেমরি GetString দিয়েছেন আপনি ফেরৎ করছি
কারণ আবার, আমি হিসাবে উল্লেখ করেছে সোমবার, সপ্তাহের জন্য GetString
আপনার কোড করেনি মধ্যে একটি বাগ সংশোধন করা হয়েছে পরিচায়ক.
সপ্তাহের জন্য আপনার কোড মেমরি তথ্য ফাঁসের হয়েছে
কিসে আপনাকে হয়েছে মেমরির জন্য GetString জিজ্ঞাসা কিন্তু আপনি কি এটা করেছি দেবার কখনও ফিরে হয়েছে.
এবং যে ইচ্ছা আমাদের ছিল নির্বাচিত pedagogically
কারণ এটা খুবই অনেক আগে থেকেই আমার চিন্তা.
কিন্তু এখন আমরা আরো প্রতিসাম্য প্রয়োজন.
আপনি যদি কম্পিউটার মেমরি জন্য জিজ্ঞাসা হিসাবে, হয় GetString জন্য কেস,
হিসাবে হয় malloc জন্য দৃশ্যত কেস,
আপনি এখন জন্য pset 4 অনওয়ার্ড এছাড়াও বিনামূল্যে কোন ধরনের মেমরি আবশ্যক.
এই int-n বলছে থেকে বিভিন্ন বিজ্ঞপ্তি.
আপনি এই মুক্ত কারণ আপনি GetString কল না করার দরকার নেই
এবং আপনি malloc কল না করে.
>> এমনকি যদি আপনি নামক GetInt হিসাবে অবশেষে আমরা দেখতে পাবেন,
GetInt কারণ আপনি পাস পূর্ণসংখ্যার কাছাকাছি করতে পারেন আপনার জন্য বরাদ্দ না করা মেমরি
এবং floats এবং চিহ্ন মাত্র উপায় সপ্তাহের জন্য আমরা কাজ করেছি হয়েছে.
যদিও পংক্তি,, হয় বিশেষ কারণ তারা একাধিক অক্ষর এর একত্রীকরণ.
সুতরাং তারা অক্ষর এবং floats এবং ints থেকে ভিন্ন এবং পছন্দ.
কিন্তু আমরা আগে যে দীর্ঘ ফিরে পাবেন.
কোন পয়েন্টার এই শুরুতে প্রশ্ন তারপর? হাঁ.
[শ্রবণাতীত ছাত্র প্রশ্ন]
আহ, খুব ভালো প্রশ্ন.
কিছু জিনিস সি আসলে আপনার জন্য আছে এক, যা সুবিধাজনক,
হয় এটা আপনার জন্য পরিসংখ্যান কি আকার তথ্য ধরনের হয়
এবং তারপরে আছে আপনার জন্য গুণন তজ্জাতীয়.
এই অক্ষর ক্ষেত্রে অপ্রাসঙ্গিক কারণ প্রায় সবসময় একটি গৃহস্থালির কাজ হয় 1 বাইট,
সে জন্য এই কাজ করে.
কিন্তু এর জন্য আলোচনা অনুরোধে, যদি আপনি এমন পূর্ণসংখ্যার ছিল মুদ্রণ
এবং আপনি কিছু গুলি যে মান পূর্ণসংখ্যা মান নির্দেশ ছিল প্রিন্ট আউট করার চেষ্টা করছিলেন,
আপনি একভাবে যাও + 4 * প্রয়োজন শুধু তোমার কারণ কোন int 4 বাইট না.
পয়েন্টার পাটীগণিত এর মানে হল যে সকল সি কম্পাইলার এবং আপনার জন্য যে গণিত না.
আপনি সমস্ত যত্নের আছে মানুষের ধারণা সাজানোর মধ্যে বেড়ে চলেছে. হাঁ.
[ছাত্রদের] যদি আপনি ভিতরে একটি লুপ জন্য একটি পংক্তি ডিক্লেয়ার, আপনার যদি পরে মুক্ত আছে কি?
ভাল প্রশ্ন.
>> আপনি যদি একটি লুপ জন্য স্ট্রিং ভিতরে ঘোষণা, আপনার যদি পরে মুক্ত প্রয়োজন নেই?
আপনি কেবল মেমরি মুক্ত করা প্রয়োজন যে আপনি GetString সঙ্গে সঙ্গে অথবা malloc বরাদ্দ করা.
সুতরাং আপনি যদি শুধুমাত্র কিছু বলতে চাই - আমাকে এখন কোঁকড়া ধনুর্বন্ধনী করা যাতে সমস্ত কোড এর সাথে সম্পর্কিত হয়.
আপনি যদি buggily যদিও কিছু, ভালো, কি, গৃহস্থালির কাজ * টন = গুলি,
আপনি বিনামূল্যে টন যাও না কারণ টন জড়িত করা malloc বা GetString কোন উল্লেখ না করার প্রয়োজন নেই.
যদি এর বিপরীতে আপনি এই করেছেন, GetString তারপর, হ্যাঁ, আপনি বিনামূল্যে টন যাও প্রয়োজন হবে.
এবং বাস্তবিকই, আপনার শুধুমাত্র সুযোগ না যে এই লুপ ভিতর এখন সুযোগ হয় একই সমস্যার জন্য,
যে আমরা অতীত নিয়ে আলোচনা করেছি.
অন্যথায় আপনি মেমরি, বণ্টন করা চাই মেমরি বণ্টন, মেমরি বণ্টন,
এবং প্রোগ্রাম শেষে, কারণ আপনি যে লুপ বাইরে থাকেন,
টন, কিন্তু বিদ্যমান আপনাকে বলেছে অপারেটিং সিস্টেম না
আপনি যে আর প্রয়োজন হয়নি যে মেমরি না.
এবং pset 4 অথবা 5 দীর্ঘ আগে, আমরা আপনাকে সজ্জিত একটি প্রোগ্রাম নামক Valgrind সঙ্গে করব,
যা অনুরূপ মধ্যে আত্মা GDB যাও যে এটি একটি রহস্যময় ইন্টারফেস এর কিছুটা পেয়েছি,
কিন্তু জীবন তার উদ্দেশ্য আপনাকে সাহায্য হয়.
এবং Valgrind একটি প্রোগ্রাম যা ভবিষ্যতে আপনার প্রোগ্রাম অনুসন্ধান করবে
মেমরি তথ্য ফাঁসের জন্য খুঁজছেন, কিনা থেকে GetString বা malloc,
যা আমরা সবাই আরো কিছু ব্যবহার হিসাবে আমরা থামাতে CS50 লাইব্রেরি ব্যবহার করে যতটা শুরু করব.
আমরা এখন অবশেষে শব্দভান্ডার ধরণের তত্ত্ব এবং মানসিক মডেল বাছাই করা আছে
যা দিয়ে এই ভাঙ্গা প্রোগ্রাম সমাধানের জন্য.
>> তাই এই ভাঙ্গা প্রোগ্রামের মধ্যে, swap-র মাপের swap ভিতরে কাজ করে,
কিন্তু প্রকৃতপক্ষে এটা কাজ করে না কারণ প্রধান প্রধান x এবং y, রিকল সালে পাশ,
এবং যারা মান গৃহীত হয়, তাই কথা বলতে.
তাদের কপি যাও অদলবদল দেওয়া হয়েছিল.
Swap-র শেষে, প্রকৃতপক্ষে একটি এবং বো বিনিময় হয়েছে,
কিন্তু x এবং y, ও হিসাবে আমরা আলোচনা সোমবার, অবশ্যই ছিলেন না তিনি.
তাই সবুজ এখানে উত্থাপন করা যে আমি আসলে এই সমাধান এখানে.
এবং প্রকৃতপক্ষে, আমাকে ঠিক সামঞ্জস্যপূর্ণ হতে আমার কপাল সরাতে
যদিও, আবার, এই বৈশিষ্ট্যগুলি না ব্যাপার না.
ভবিষ্যতে সপ্তাহের মধ্যে আমরা কখন এবং কেন এটা আছে বিষয়টি ব্যাখ্যা করব.
তাই এখন সবুজ একটি সমাধান.
সত্যি, এটা দেখতেও অনেক সমগ্র Messier কারণ আমি এই বড় সব আছে.
আমাকে এক জিনিস নির্দেশ.
এখানে উপরের লাইন যেখানে এটি int-* এবং একটি int-* বো
মৌলিকভাবে হয় একই জিনিষ করছেন হিসাবে সবসময় তা হয়.
এটি 2 আর্গুমেন্ট অথবা পরামিতি হয় অদলবদল প্রকাশক,
প্রথমে যা কোন int পয়েন্টার বলা হয়,
যার দ্বিতীয়টি হল কোন int পয়েন্টার নামক বো.
শুধু যে এই সময়ে নতুন সত্য যে সেখানে আছে একটি তারকা.
>> এর অর্থ কি? একটি int-এ নয়, বো কোন int হয় না.
একটি হল কোন int এর ঠিকানা এবং b হল একটি ভিন্ন int-এর ঠিকানা.
নিচে এখানে, এই হল যেখানে আমি মানা সি পায় বিভ্রান্তিকর.
এখন আমরা একটি তারকা ব্যবহার করছেন, কিন্তু এটি এই কনটেক্সট ভিন্ন অর্থ আছে.
কারণ আমরা হিসাবে আমরা এখানে আপ প্রকাশক পয়েন্টার করছি না,
এখানে আমরা জিনিস dereferencing হয়.
তাই টেকনিক্যালি, swap-র ভিতর প্রথম, দ্বিতীয়, তৃতীয় এবং লাইনের এই প্রেক্ষাপটে তারকা
হয় dereference অপারেটর, যা শুধু অর্থ সেখানে যান.
সে হিসাবে আমার আঙুল জ যাও তীর অনুসরণ,
* যে ঠিকানা থেকে একটি উপায় এবং যান সম্পর্কে int-এ যে রয়েছে তা খুঁজে পেতে.
* ঠিকানা যাও বো মানে এবং যান সম্পর্কে কি আছে পাস.
সুতরাং এর সোমবার এখন ফ্রেমের একটি স্ট্যাক ব্যবহার করে ছবি থেকে পুনরায় আঁকুন যাক,
যা নীচে এক যাও প্রধান হবে,
যা উপরের এক মাপের swap হবে,
যাতে আমাদের শুধু সোমবার মত দেখাচ্ছে, ভালো,.
এখানে মেমরি একটি প্রধান অঞ্চলে যা ব্যবহার করতে হবে.
>> সোমবার থেকে প্রত্যাহার করা যে ঠিক প্রোগ্রাম 2 ভেরিয়েবল ছিল,
এক এক্স এবং এক নামক y বলা হয়, এবং আমি 1 এবং 2 করা আছে সংখ্যা ছিল.
এখন যখন আমি ভালো অদলবদল কল আমি সোমবার হয়নি,
পূর্বে যখন আমি এই প্রোগ্রাম লাল সংস্করণটি ব্যবহৃত, যা ভালো দেখায়,
আমি 2 পরামিতি, একটি এবং খ পেয়েছি, এবং কি আমরা কি এখানে এবং এখানে লিখে?
শুধু 1 এবং 2, আক্ষরিক x এবং y কপি.
আজ আমরা যে পরিবর্তন.
আজ পরিবর্তে ints মধ্যে ক্ষণস্থায়ী এবং a ও b আমরা 2 ঠিকানাগুলি পাস যাও চলুন.
যারা ঠিকানাগুলি ints নির্দেশ ঘটেছে, কিন্তু যারা নিজেদের ঠিকানাগুলি ints হয় না.
তারা ঠিকানা. এটি একটি পোস্টাল ঠিকানা ভালো এর পরিবর্তে.
তাই এখন আমরা শুধু নিজেকে পর্দার উপর একটু বিস্তারিত দিন প্রয়োজন.
এটা আমার কম্পিউটার এর মেমরি হিসাবে এটি সব দিন ছিল.
এখন আমরা কিছু অবাধ সংখ্যায়ন প্রকল্প প্রয়োজন.
তাই এর সুযোগ দেওয়া ঠিক দ্বারা শুধু বলে, যে এই মেমরি ঠিকানা 123, 124.
চলুন শুরু করা যাক সেটা এই হল 125, এই হল 126, এবং তাই ঘোষণা, কিন্তু এটা সম্পূর্ণই নির্বিচারে.
আমরা কিছু কিছু আমার মেমরি সংখ্যায়ন প্রকল্প প্রয়োজন.
তাই এখন যখন আমি আসলে x এবং y পাস, আমি x এবং y পাস যাও যাচ্ছি না;
আমি পোস্টাল ঠিকানা মধ্যে x ও y টিপে পাস, তাই কথা বলতে যাচ্ছি
যাতে কি এখানে এবং এখানে সংরক্ষিত পরার 1 এবং 2 হয় না,
কিন্তু আপনি যদি আমার ছোট লেখা দেখতে পারেন, কি এখানে এবং এখানে সালে পাশ পরার?
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> যথাযথভাবে. 123 এখানে রাখুন এবং 124 এখানে রাখুন পরার হয়.
>> কারণ এখন, আমি তারকা ব্যবহৃত শীর্ষে এই প্রথম লাইন আপ উপায় এখানে,
আমার প্রোগ্রাম ঠিক যে 123 এবং 124 জানে, যদিও তারা স্পষ্টত করছি পূর্ণসংখ্যার
যে কোনো মানুষের লক্ষ্য করা যায়নি, তারা ঠিকানাগুলি, সাংখ্যিক ঠিকানা হিসাবে ব্যাখ্যা করা উচিত.
এবং তারা নিজেদের মধ্যে ints হয় না, তারা ঠিকানাগুলি,
এবং যে কারণে আমি স্পষ্টভাবে বড় করা আছে.
তাই এখন আমার আসল কোড কি ঘটবে এখানে প্রথম, দ্বিতীয়, তৃতীয় এবং লাইন?
যাক এর ছবি বাকি আঁকা.
এটা সোমবার মত ছিল tmp হয়. কিছুই tmp সম্পর্কে বিশেষ.
এটা শুধু একটি স্থানীয় 32 বিট পরিবর্তনশীল, এবং ভেতরের যে আমি দৃশ্যত * একটি মান am সংরক্ষণকারী.
এখন, আমি যদি বলেন tmp = একটি, আমি এখানে কি করা হবে? >> [ছাত্রদের] 123.
123. কিন্তু যে কি আমি করছি না.
আমি tmp করছি বলছে = * একটি. রাশি মানে সেখানে যান.
তাই এখানে একটি, 123. আমি কিভাবে সেখানে যাওয়ার জন্য? ভালো একটি তীর আছে জাহির করা.
ওয়েল, এটা আছে, 1. Tmp মধ্যে কি, সঞ্চিত দৃশ্যত পরার? শুধু 1.
তাই অন্য কথায়, tmp * একটি হল, * উপায় ঠিকানা বর্তমানে যান,
দৃশ্যত যা হয় 123.
>> ঠিক আছে, এখানে আমরা অবস্থান 123 এ আছে, আমি নম্বর 1 দেখুন,
তাই আমি সেখানে 1 নম্বর রাখা যাচ্ছে না.
এখন কি করে আমি লাইন 2 কি, একটি * = * বো?
এই এক একটি ছোট আরো জড়িত কারণ এখন কি হয়? এটা 123.
সুতরাং * একটি হল যেখানে? অধিকার যেখানে আমি আগে ছিল. তাই সেখানে যান. ঠিক আছে.
এখন সর্বশেষে,, এবং তারপর অবশেষে এই জানার জন্য, শুরু হবে আশা,
* বো বো মধ্যে অর্থ কি? 124. সুতরাং আমি সেখানে যাওয়ার প্রয়োজন, যা 2.
আমি কি তাই যেখানে কি করা?
2 এখানে মধ্যে যায় কারণ * খ * একটি মধ্যে যায়. তাই আমি যে করব.
এবং ইতিমধ্যেই আপনি দেখুন, সম্ভবত, করতে পারেন যে আমরা এত কাছাকাছি
প্রথম যাও সমাধানের জন্য সময় সঠিকভাবে এই মূঢ়, সাধারণ সমস্যা
কারণ এখন আমরা এখনও কি এক্স ছিল একটি চিন্তন আছে,
আমরা 2 কপি আছে, নিঃসন্দেহে y র,,
কিন্তু এখন লাইন 3 বলছেন * খ.
সুতরাং এখানে বো. * বো মানে সেখানে যান. তাই যেখানে স্থান হল 124?
এটা হয়ত এখানে. আমি কি এখানে তাই না করা? একথাও ঠিক যে, tmp.
তাই এখন আমি এই কাজের জন্য. তাই আমি এখানে 1 এবং 2 এখানে আছে.
এবং এখন আমার কি এই সকল, 123, 124, এবং 1?
যত তাড়াতাড়ি swap হিসাবে আয়, এই হল মেমরি হিসাবে ভাল হিসাবে হারিয়ে
কারণ যত তাড়াতাড়ি swap হিসাবে আয়, অপারেটিং সিস্টেম
যে মেমরি ব্যবহার আবার ভবিষ্যতে বিনামূল্যে.
শুধু এই তথাকথিত স্ট্যাকের নীচে প্রধান মেমরি এর কাছাকাছি লাঠি.
>> তাই অবশেষে আমরা একটি কাজ সংস্করণ এখন.
যাক swap.c মধ্যে সম্পর্কে যান এবং নিম্নলিখিত বিজ্ঞপ্তি.
প্রোগ্রাম শীর্ষে আমি আমার প্রোটোটাইপ করা হয়েছে করেছি int-* এবং একটি int-* খ.
তাই আমি শুধু থেকে লাল, যা খারাপ ছিল, সবুজ, যা ভাল যেতে পরিবর্তন,
হয় আমি এই বড় যোগ আজ.
কিন্তু তারপর নিচে এখানে নিজেকে আমি কপি করে swap, ঠিক কি ছিল স্লাইডে পেস্ট করুন.
আমি এখানে একটি তারকা আছে, তারা এখানে - যে প্রোটোটাইপ সাথে মেলে -
এবং তারপর এখন এইসব জিনিস সব জন্য tmp ছাড়া বড় আছে
কারণ একটি অস্থায়ী ভেরিয়েবল ব্যবহার, সেখানে আছে কিছুই নতুন.
আমি কোন int জন্য অস্থায়ী সংগ্রহস্থল আবশ্যক.
তাই সেখানে আমরা প্রয়োজন একটি তারকা না.
আমরা শুধু তারকা প্রয়োজন যাতে আমরা নির্বিচারে সীমানা এই সাজানোর ক্রুশ পারেন
আমার মধ্যে এই কম্পিউটার এর মেমরি 2 ফ্রেম.
কিন্তু এক জিনিস শেষ পরিবর্তন হয়েছে, এবং আপনি ইতিমধ্যে এটি glimpsed থাকতে পারে.
কি অন্যান্য লাইন এখন সুস্পষ্টরূপে আলাদা? >> [ছাত্রদের] & x.
>> হ্যাঁ, তাই 25 হল কোড শেষ লাইন আমি এই জন্য কাজ পরিবর্তন প্রয়োজন.
এক সপ্তাহ আগে এবং এমনকি সোমবার লাইন 25 ভালো লাগছিল, এক্স এবং ওয়াই swap,
এবং শুধু এই ভাঙ্গা ছিল কারণ যদি আপনি বলার জন্য swap (x, y)
আপনি কপি অদলবদল x এবং y এর দিচ্ছেন, তাহলে তার জিনিস করছে,
কিন্তু আপনি x ও y নিজেই আসলে পরিবর্তন করছি না.
সুতরাং এমনকি আপনি যদি এই অক্ষরের কোড মধ্যে ampersand সাথে দেখা না আগে,
শুধু একটা আন্দাজ নিতে. কি ampersand, দৃশ্যত না?
[ছাত্রদের] ঠিকানা নিয়ে. >> ঠিকানা নিয়ে.
সুতরাং ampersand সম্পর্কে x ঠিকানা দিতে বলছে না.
যেখানে এটা কে জানে? এটি 123 হতে হবে. আমি না যত্ন না. শুধু সম্পর্কে x এর ঠিকানা দিন.
& Y সম্পর্কে y এর ঠিকানা দিন মানে.
এবং আমরা যে বিন্দু বিবরণ হল ছবি সঙ্গে পুরোপুরি সঙ্গতিপূর্ণ এ সৃষ্টি একটি মুহূর্ত আগে.
>> তাই আমি পয়েন্টার মানা সম্পর্কে জন্য অবশ্যই, আমি শুরু করব প্রথম যখন এই শিক্ষা,
ছিল স্পষ্টভাবে hardest জিনিষ কাছাকাছি আমার মন মোড়ানো এক.
কিন্তু, বুঝতে বিশেষত হিসাবে আমরা রাখা জিনিষ এই ধরনের সঙ্গে বাজানো,
যদি আপনি এটি বিরতি এই সুপার সহজ সাজানোর ডাউন বুদ্ধিমত্তা সমস্যা নীরস
শুধু সংখ্যার কাছাকাছি চলন্ত বিভ্রান্তির অনেক যাও, সঙ্গে পয়েন্টার উত্তর
সত্যিই খুব মৌলিক বলবিজ্ঞান থেকে আহরিত হতে পারে.
এখানে একটি ঠিকানা. তারকা সঙ্গে সেখানে যান.
অথবা বিপরীতক্রমে, এখানে একটি ampersand. আউট চিত্র কি আসলে ঠিকানা হল.
ঠিক আছে.
সুতরাং যেখানে এই মেমরি সব থেকে আসছে?
আমরা বার কয়েক আঁকা এই ছবি, করেছি এবং আমি রাখা প্রতিশ্রুতিশীল আমরা তা ফিরে আসবো,
কিন্তু এখানে আপনার কম্পিউটার এর মেমরি উপস্থাপনা
যে এখানে একটু chalkboard আমাদের তুলনায় আরো লেবেল করা হয়.
উপরে অবস্থিত একটি টেক্সট সেগমেন্ট আপনার প্রোগ্রামের ক্ষেত্রে কি প্রতিনিধিত্ব করে?
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> দুঃখিত? আবার বলুন.
[ছাত্রদের] আসল প্রোগ্রাম. >> আসল প্রোগ্রাম.
>> সুতরাং 0 সেঃ এবং 1s যে আপনি সি কোড লেখার পর কম্পাইল করা আছে এবং তারপর চলমান ঝনঝন
0 সেঃ এবং 1s এবং শেষ পর্যন্ত উৎপাদিত মেমরি tucked সেখানে শুরু
কারণ যখন আপনি আপনার ডবল Mac বা PC তে একটি আইকন ক্লিক করুন
অথবা আপনার প্রম্পটে তোমার মত একটি কমান্ড চালানোর জন্য আপনার 0 সেঃ এবং 1s থেকে ডিস্ক
মেমরির মধ্যে লোড করা যাতে তাদের কম্পিউটার নিপূণভাবে পারেন
এবং তাদের আরো দ্রুত চালানো হয়.
সুতরাং সক্রিয়া তথ্য এবং uninitialized তথ্য, আমরা যারা অনেক বিষয়ে কথা বলতে হবে না,
কিন্তু যারা শুধু গ্লোবাল ভেরিয়েবল.
সক্রিয়া গ্লোবাল ভেরিয়েবল যে আপনি মান দিয়েছেন বুঝাইবে;
uninitialized গ্লোবাল ভেরিয়েবল যে আপনি এখনো মান না দেওয়ার অর্থ হল.
তারপর এই এনভায়রনমেন্ট ভেরিয়েবলের যা আমি সম্পূর্ণ আমার হাত তরঙ্গ করতে পারেন,
কিন্তু আছে, তারা এবং সেখানে আপনার ব্যবহারকারী নাম ভালো জিনিসের দোকানে
এবং নিম্ন স্তরের বিবরণ অন্যান্য সাজান.
কিন্তু আপনার মেমরি এর লেআউটের juiciest টুকরা হল এই জিনিস বলা স্ট্যাকের এবং গাদা.
আবার স্ট্যাকের, পরিষ্কার করা, মেমরি যে যখনই ফাংশন বলা হয় ব্যবহৃত হবে,
যখনই স্থানীয় ভেরিয়েবল আছে
এবং যখনই কাছাকাছি পরামিতি আছে অতিক্রান্ত হচ্ছে.
যে সমস্ত স্ট্যাকের মধ্যে ঘটবে.
গাদা আমরা সম্পর্কে, কিন্তু কথা বলত না একটি অনুমান যারা গাদা ব্যবহার করে নিতে.
শুধু একটি মেমরি বিভিন্ন অঞ্চলে.
এটা এখানে উপরের দিকে আকৃষ্ট করা, কিন্তু যে একটি অবাধ সচিত্র কনভেনশন.
এর দৃশ্যত কে গাদা থেকে করা হয়েছে সপ্তাহের জন্য মেমরি ব্যবহার করে?
এটা টেকনিক্যালি আপনার কিন্তু পরোক্ষভাবে. >> [ছাত্রদের] GetString.
GetString এবং malloc. সুতরাং এখানে মৌলিক পার্থক্য.
>> আপনি গত কয়েক সপ্তাহ ধরে জানেন যে আপনি যদি মেমরি প্রয়োজন, শুধু একটি ভেরিয়েবল ডিক্লেয়ার.
আপনি যদি মেমরি অনেক প্রয়োজন, একটি অ্যারের আপনার ফাংশনের ভিতর ডিক্লেয়ার.
কিন্তু সমস্যা আমরা সম্মুখীন রাখা করেছেন তা যদি আপনি ভেরিয়েবল স্থানীয়ভাবে ভিতর ফাংশন ঘোষণা,
যত তাড়াতাড়ি ফাংশন আয়, কি মেমরি এবং যারা ভেরিয়েবল যাও কি হবে?
এটি শুধু সাজানোর আর পুলিশের অধিকার,? এটা কি ধরণের ধারণার disappears.
এটা এখনও শারীরিকভাবে আছে, অবশ্যই, কিন্তু এটা এখন আর আপনার সঠিক ব্যবহার.
এটি সম্ভবত সমস্যাযুক্ত যদি আপনি জীবনে ফাংশন লিখতে চান
আসলে মেমরি বরাদ্দ করা এবং ফিরে আসবো এটা না অবিলম্বে.
একটা উদাহরণ হল: জীবনের GetString এর উদ্দেশ্য আগাম কোন ধারণা আছে
কিভাবে একটি স্ট্রিং আমি কীবোর্ড এ টাইপ যাচ্ছি বড়,
কিন্তু মেমরি ডেভিড বা হ্যালো রাখা বরাদ্দ করতে সক্ষম হবেন না এর
বা পুরো রচনা যে ব্যবহারকারী টাইপ ইন থাকতে পারে
সুতরাং GetString হয়েছে malloc ব্যবহার করে.
Malloc সুতরাং স্ট্যাকের না ব্যবহার করা আবশ্যক;
এর পরিবর্তে এটি এই জিনিস বলা গাদা এর ব্যবহার করে.
কিছুই মেমরি সম্পর্কে বিভিন্ন আছে. এটা বা দ্রুত গতিতে চলে না অথবা যে ভালো কিছু.
এটি একটি ভিন্ন স্থানে শুধু শারীরিকভাবে.
>> কিন্তু নিয়ম হচ্ছে যে মেমরি যা গাদা বন্টন এর
আপনার কাছ থেকে গ্রহণ না করা পর্যন্ত দূরে আপনি কল - একটি অনুমান নিতে - মুক্ত.
বিপরীতভাবে, একবার কোনো মেমরিতে স্ট্যাকের জন্য আপনাকে কেবল একটি অ্যারের প্রকাশক দ্বারা জিজ্ঞাসা
অথবা একটি পরিবর্তনশীল প্রকাশক মত আমরা সপ্তাহের জন্য করা হয়েছে করেছি করছেন,
যে ডিফল্ট স্ট্যাক শেষ পর্যন্ত.
এবং যে মহান সময় 90% কাজ করে যারা অনুষ্ঠান দুর্লভ, কিন্তু
যেখানে আপনি মেমরি বরাদ্দ করা এবং এটি কাছাকাছি রাখতে চান,
তারপর আপনি malloc মত একটি ফাংশন ব্যবহার করতে হবে.
অথবা আমরা GetString, যেটা ঘুরে malloc ব্যবহার করে ভালো একটি ফাংশন ব্যবহার করেছি.
চলুন যেখানে এই ডাউন এবং তারপর বিরতি Binky একটি উঁকি সময় নিতে পারে দেখুন.
আমরা যে ভবিষ্যতে ফিরে আসতে হবে.
এখানে একটি সুপার সহজ প্রোগ্রাম যে প্রথম 2 লাইন কি আছে?
ইন ইংরেজি কি, এই প্রথম 2 লাইন কোড না ভিতর কি মূল?
[শ্রবণাতীত ছাত্র প্রতিক্রিয়া]
সতর্ক থাকুন. এটি সম্পর্কে x বা y এর ঠিকানা দেয় না.
[ছাত্রদের] ints যাও পয়েন্টার দেয়. >> গুড. পূর্ণসংখ্যার একে 2 পয়েন্টার সম্পর্কে.
অন্য কথায়, সম্পর্কে মেমরি 2 অংশ যে আমি অঙ্কন রাখা আজকের দিন,
যদিও আমি এটা মুছে ফেলা এখন স্কোয়ার হিসাবে,.
সম্পর্কে মেমরির অংশ 2 দিন, এক এক্স নামক, এক y বলা হয় -
তার আগে আমি নামক তাদের গুলি এবং টন - এবং কি মেমরি যে তাল ধরণ?
এটি একটি ঠিকানা সংরক্ষণ করে যাচ্ছে.
এই পার্টিশনটির ধরন * int-এর মধ্যে.
>> তাই অবশেষে কোন int x ঠিকানা বসবাস করা,
কোন int ঠিকানা অবশেষে y বসবাস করা,
কিন্তু প্রথমে, এক্স এবং ওয়াই ভিতর কি? কে জানে? জঞ্জাল মান.
এটা পয়েন্টার না কিছুই আছে.
আমরা যদি কিছু আছে, কে জানে আসলে কি আছে করা আছে না?
এখন, এক্স. এখানে কি হয়? এটি এখন legit কারণ এক্স একটি পয়েন্টার. এটা কোন int *.
যাতে x এর মানে আমি মেমরির কিছু খণ্ড ঠিকানা লাগাতে পারেন.
কি malloc ফিরে? পারফেক্ট, এটি ঠিকানা ফেরৎ,
একটি মেমরি পুরো তাল প্রথম বাইট এর ঠিকানা.
কত বাইট এই দৃশ্যত হয় উদাহরণস্বরূপ বণ্টন, যন্ত্রপাতি মধ্যে,?
কোন int মাপ কি? 4.
আপনি যদি 1 সপ্তাহ ফিরে মনে করি, এটা মনে রাখা গুরুত্বপূর্ণ যে সবসময় সুপার হইনি,
কিন্তু এই ক্ষেত্রে এর 4 বাইট জানি, দরকারী.
তাই এই গাদা 4 বাইট উপর বণ্টন করা হয়
এবং এটা আমার প্রথম এক ঠিকানা এর ইচ্ছামত ফিরে.
এখন কি জন্য, x করছে?
একটি * x = 42 কি করছে?
যদি এ বিবরণ এই বিন্দু আমরা এক্স, ভালো যা কিছু আবর্জনা মান সঙ্গে দেখায় আছে,
এই এখন কিছু আবর্জনা মান সঙ্গে y, ও এখন লাইন 3 সালে আমি 4 বাইট বরাদ্দ করেছি.
মূলত এই ছবি ভালো দেখায়.
বা আরো নির্দিষ্টভাবে, যদি এই হয় নির্বিচারে ঠিকানা 123, এই কি আমাদের গল্প এখন মনে হচ্ছে.
* এখন x = 42 মানে কি? তার মানে ঠিকানা 123 যান এবং সেখানে রাখা 42 নম্বর.
আমি এইসব লাইন আঁকা কারণ আমরা স্ট্রিং কাজ করছি না দরকার নেই.
>> আমি ভালো আছে এটা করা উচিত, এবং শুধুমাত্র জন্য বিক্ষোভের দোহাই,
কোন int ধরনের হিসাবে 42 নেয় স্থান অনেক আপ, 4 বাইট.
সুতরাং যে কি ঘটেছে অনেক কিছু আছে, কিন্তু এখন আছে একটি সমস্যা.
* Y = 13. কী ঘটতে যাচ্ছে এখানে এর?
সমস্যা হল আমাদের সরলীকৃত বিশ্বের * y শুধু অর্থ y মধ্যে ঠিকানা যান.
Y কি আছে? এটা কিছু আবর্জনা মান.
সুতরাং এর অনুমান করা যাক যে আবর্জনা মান 5551212, যে ভালো কিছু ছবি.
* Y নিমিত্ত 5551212 মোকাবেলার যান.
যে উপর এখানে চাই. এটা, বিদ্যমান ইনস্ট্যান্স জন্য না.
সুতরাং * y 13 মানে আমি এখানে 13 আঁকার চেষ্টা করছি পায়. এটার অস্তিত নেই.
আমি বিদ্যালয়ে লিপির জন্য তক্তা অংশ অতিক্রম করেছেন. কি আমি পেতে পারি?
যে সাঙ্কেতিক বার্তা সেগমেন্টেশন ফল্ট কারণ আমি যা মেমরির মধ্যে রাখতে চেষ্টা করছি
13 ভালো একটি স্থান, যা বিদ্যমান নেই এ মান.
প্রোগ্রাম বাকি যে বিন্দু পর্যন্ত কাজ না হয় ঠিক আছে, কিন্তু আপ পারে.
তাই আসুন এই গল্প বলার চেষ্টা.
আমরা যে একবার আমরা হেক্স স্বপ্ন করেছি ফিরে আসবো.
এর পিছনে এই যান এবং এই বিষয় বলা Binky সঙ্গে শেষ করা যাক,
যা রিকল হয় স্ট্যানফোর্ড অধ্যাপক বসা বাড়ীতে claymation সঙ্গে বাজানো,
হুবহু একই প্রোগ্রাম গল্প বলা.
এটি মাত্র 3 মিনিট দীর্ঘ. এখানে আমরা Binky আছে.
[ভিডিওতে পুরুষ স্পিকার] হে Binky, জেগে ওঠা. এটা মজা করার জন্য পয়েন্টার সময়.
[Binky] কি যে? পয়েন্টার সম্পর্কে জানুন? ওহ, বুড়ি!
[পুরুষ স্পিকার] আচ্ছা, শুরু, আমি অনুমান আমরা একটি দম্পতি পয়েন্টার প্রয়োজন চলুন.
>> [Binky] ঠিক আছে. এই কোড 2 পয়েন্টার যা পূর্ণসংখ্যার নির্দেশ বরাদ্দ করতে পারেন.
[পুরুষ স্পিকার] ঠিক আছে. ওয়েল, আমি 2 পয়েন্টার দেখতে, কিন্তু তারা কিছু ইশারা করা হবে না বলে মনে হচ্ছে.
[Binky] সেটাই ঠিক. প্রাথমিকভাবে, পয়েন্টার কিছু নির্দেশ না.
যে যে নির্দেশ pointees বলা হয়, এবং তাদের জন্য সেট আপ একটি পৃথক ধাপ.
[পুরুষ স্পিকার] ওহ, অধিকার, অধিকার. আমি যে জানত. pointees আলাদা আলাদা.
Er, যাতে আপনি কিভাবে একটি pointee বরাদ্দ না?
[Binky] ঠিক আছে. এই কোড একটি নতুন ইন্টিজার pointee বরাদ্দ করা, এবং এই অংশ x তা নির্দেশ করার জন্য সেট করে.
[পুরুষ স্পিকার] আরে, যে দেখতেও ভাল.
সুতরাং এটা কিছু না. >> [Binky] ঠিক আছে.
আমি পয়েন্টার x তার pointee মধ্যে 42 নম্বর সঞ্চয় dereference করব.
এই কৌতুক জন্য আমি আমার dereferencing যাদু জাদুদণ্ড করতে হবে.
[পুরুষ স্পিকার] তোমার dereferencing যাদু জাদুদণ্ড? দারুণ.
[Binky] এটা কি কোড মত দেখাচ্ছে. আমি সেট আপ নম্বর এবং করব ... [শব্দ পপিং]
[পুরুষ স্পিকার] হে চেহারা, যায় এটা আছে.
তাই x এর একটি dereference করছেন তীর তার pointee অ্যাক্সেস অনুসরণ করে,
এই ক্ষেত্রে, সেখানে যাও 42 সঞ্চয়.
আরে, এটা অন্যান্য পয়েন্টার, y মাধ্যমে নম্বর 13 সঞ্চয় ব্যবহার করার চেষ্টা করুন.
[Binky] ঠিক আছে. আমি শুধু এখানে যান উপর করব এবং 13 নম্বর সেট আপ পেতে
এবং তারপর dereferencing মাত্র এবং জাদুদণ্ড নিতে ... [Buzzing শব্দ] দাঁড়ান!
[পুরুষ স্পিকার] ওহ অঁ্যা, যে কাজ করে নি.
>> , Binky বলুন, আমি y dereferencing একটি ভাল ধারণা না মনে হয়
কারণ সেট আপ pointee একটি পৃথক ধাপ
আমি এবং আমরা কখনও তা মনে করি না.
[Binky] হুম, ভাল পয়েন্ট.
[পুরুষ স্পিকার] হ্যাঁ. আমরা পয়েন্টার y বরাদ্দ কিন্তু আমরা একটি pointee নির্দেশ সেট কখনও.
[Binky] হুম, খুব সজাগ.
[পুরুষ স্পিকার] আরে, আপনি ভাল আছে খুঁজছেন, Binky করছি.
এটা ঠিক যে x হিসাবে একই pointee যাও y পয়েন্ট পারেন? >> [Binky] শিওর.
আমি আমার পয়েন্টার নিয়োগ যাদু জাদুদণ্ড ব্যবহার করব.
[পুরুষ স্পিকার] যে Is যাও আগে ভালো একটি সমস্যা হবে?
[Binky] না, এই pointees না স্পর্শ না.
এটা শুধু একটা পয়েন্টার অন্য হিসাবে একই জিনিস নির্দেশ পরিবর্তন. [শব্দ পপিং]
[পুরুষ স্পিকার] ওহ, আমি দেখতে. এখন x হিসাবে একই জায়গায় y পয়েন্ট.
তাই অপেক্ষা করুন. Y এখন সংশোধন করা হয়েছে. এটি একটি pointee আছে.
সুতরাং আপনি dereferencing আবার 13 ওভার পাঠান জাদুদণ্ড চেষ্টা করতে পারেন.
[Binky] Uh, ঠিক আছে. এখানে যায়. [শব্দ পপিং]
[পুরুষ স্পিকার] এই যে, চেহারা. এখন y কাজ dereferencing.
এবং কারণ পয়েন্টার যে এক pointee ভাগ করা হয়, তারা উভয় 13 দেখুন.
[Binky] হ্যাঁ, ভাগ. যাই হোক না কেন.
>> সুতরাং আমরা এখন জায়গা সুইচ যাচ্ছে?
[পুরুষ স্পিকার] ওহ বর্ণন, আমরা সময় ফুরিয়েছে. >> [Binky] কিন্তু -
[পুরুষ স্পিকার] শুধু 3 পয়েন্টার নিয়ম মনে রাখবেন.
নম্বর 1, মূল কাঠামো হয় যে আপনি একটি ইশারা আছে এবং এটি একটি pointee স্থানটিকে উপর.
কিন্তু পয়েন্টার এবং pointee আলাদা আলাদা, এবং সাধারণ ত্রুটির একটি পয়েন্টার সেট আপ
কিন্তু এটি একটি pointee দিতে ভুলবেন না.
সংখ্যা 2, পয়েন্টার dereferencing পয়েন্টার আরম্ভ এবং তার উপর তীর অনুসরণ
তার pointee অ্যাক্সেস.
আমরা জানি, কেবল এই কাজ যদি একটি pointee আছে,
যা ধরনের ফিরে পায় যাও 1 নম্বর দেওয়া.
সংখ্যা 3, পয়েন্টার নিয়োগ এক পয়েন্টার নেয় এবং এটি পরিবর্তন
অন্য পয়েন্টার হিসাবে একই pointee দিকে নির্দেশ করে.
তাই নিয়োগ পরে, 2 পয়েন্টার একই pointee নির্দেশ করবে.
কখনও কখনও যে ভাগ বলা হয়.
>> এবং যে সব তা সত্যিই আছে. বিদায় সম্ভাষণ এখন.
এটি Binky. এটি CS50. আমরা আপনাকে দেখতে আগামী সপ্তাহে যাব. [সাধুবাদ]
>> [CS50.TV]