[সঙ্গীত বাজানো] ডেভিড জে MALAN: ঠিক আছে. এটি CS50, এবং এই চার সপ্তাহ শেষে. এবং বিষয় আজ এক ডিজিটাল ফরেনসিক যে, হয় তথ্য পুনরুদ্ধার শিল্প. এবং প্রকৃতপক্ষে, যদিও আপনি তন্মধ্যে মধ্যে আছেন ডান এখন শান্তির তিনটি এবং ব্রেকআউট, আগামী সপ্তাহে, ফোকাস হতে হবে অবিকল এই ডোমেইন. কখনই কাজ তাই এক আমি কখনও ছিল, ফিরে স্নাতক স্কুলে ছিল আমি স্থানীয় জন্য কাজ ছিল যখন মিডলসেক্স কাউন্টি জেলা অ্যাটর্নি অফিস করছেন ফরেনসিক কাজ. তাই মূলত, ম্যাসাচুসেটস রাজ্য পুলিশ, অনুষ্ঠানে, ক্ষেত্রে কাজ করবে হার্ড ড্রাইভ ভালো জিনিস আনা এবং ফ্লপি ডিস্ক এবং মেমরি কার্ড এবং ভালো. এবং তারা তাদের হাতে হবে আমার এবং আমার পরামর্শদাতা যাও, এবং আমাদের লক্ষ্য প্রমাণ খুঁজে বের করতে, এই মিডিয়া কোন, যদি সেখানে ছিল. এখন, আপনি দেখা হতে পারে ঝলক ফরেনসিক এই বিশ্বের মিডিয়া, টিভি এবং সিনেমা. কিন্তু কাজ আমি ছিল, এবং অনুমান করা বিশ্বের যে, আপনি এটা দেখতে চাই বেশ হয় না. এর কটাক্ষপাত করা যাক কি আপনি সম্ভবত করেছি দেখা যায়. [ভিডিও প্লেব্যাক] -ওকে. এখন, আপনি একটি ভাল চেহারা পেতে. [সঙ্গীত বাজানো] এটা হোল্ড. যে ফিরে চালান. একটি মিনিট অপেক্ষা করুন. ডান যান. এখন পর্যন্ত. যে বরফে পরিণত করা. সম্পূর্ণ পর্দা. -ওকে. যে বরফে পরিণত করা. আপনি, যে আপ -Tighten? যে উপর -ভেক্টর ফিরে চাকা দ্বারা লোক. এখানে ডান এই স্পট ইন জুম. ডান সরঞ্জাম সহ, ইমেজ এবং বৃদ্ধ শাণিত করা যাবে. যে -কি আছে? -এটা একটি বর্ধিতকরণ প্রোগ্রাম. যে কোন স্পষ্ট করতে পারি? আমি জানি না. এটা উন্নত করা যাক. -উন্নত অনুচ্ছেদ থেকে A6. আমি বিস্তারিত উন্নত, and-- আমি উন্নত যথেষ্ট আছে মনে হয়. আমার পর্দায় এটি মুক্ত. আমি তার চোখে প্রতিফলন উন্নত. -যাক মাধ্যমে এই রান এর ভিডিও বৃদ্ধি. -Edgar, আপনি এই উন্নত করতে পারেন? উপর -Hang. এই প্রতিফলন কাজ হয়েছে -I've. এখন পর্যন্ত এর কেউ এর প্রতিফলন. -Reflection. মানুষের মুখের একটি প্রতিফলন এখন পর্যন্ত আছে. -বাছাইযোগ্য প্রতিফলন! একটি প্রতিফলন এখন পর্যন্ত আছে. আয়না ইন জুম. আপনি একটি প্রতিফলন দেখতে পারেন. আপনি এখানে থেকে ইমেজ উন্নত পারি? যদি আপনি এটি উন্নত পারি? যদি আপনি এটি উন্নত পারি? আমরা এই উন্নত পারি? যদি আপনি এটি উন্নত পারি? একটি দ্বিতীয় হোল্ড. আমি উন্নত করব. দরজা ইন জুম. 10 -টাইমস. জুম. মধ্যে সরান. আরো. -Wait, বন্ধ. -Stop. এটা -বিরাম. আমাদের 75 ডিগ্রী ঘোরান উল্লম্ব কাছাকাছি, দয়া করে. -Stop. অংশ ফিরে যান দরজা আবার. বিটম্যাপ করতে পারেন যে একটি ইমেজ enhancer পেয়েছেন? আমরা প্রদীপ সিং ব্যবহার করতে পারেন -Maybe পদ্ধতি জানালা মধ্যে দেখুন. স্বয়ংক্রিয়ভাবে সফ্টওয়্যার শিল্পের রাষ্ট্র. -বাছাইযোগ্য Eigenvalue বন্ধ. ডান -সঙ্গে আলগোরিদিম সমন্বয় -তিনি এর নেওয়া আলোকসজ্জা পরবর্তী স্তরে আলগোরিদিম, এবং আমি তাদের ব্যবহার করতে পারেন এই আলোকচিত্র উন্নত. উপর লক এবং z-অক্ষ বিস্তৃত. উন্নত. উন্নত. উন্নত. -ফ্রিজ এবং উন্নত. [END টি ভিডিও প্লেব্যাক] ডেভিড জে MALAN: তাই যারা সব শব্দ, কিন্তু তারা ছিল না সঠিকভাবে বাক্য ব্যবহার করা. এবং প্রকৃতপক্ষে ভবিষ্যতে যে কোনো সময়, , যদি আপনি কাউকে কথা বলতে শুনতে দয়া করে, শুধু একটি সামান্য বিট মৃদুহাস্য, "উন্নত". আপনি উন্নত করতে চেষ্টা করুন, কারণ, উদাহরণস্বরূপ, এই কি ঘটবে. তাই এখানে একটি চমত্কার ছবির জন্য. এই CS50 এর নিজস্ব Daven হয়. এবং আমরা চেয়েছিলেন তার চোখে ঝিকিমিকি উপর ফোকাস, বা প্রতিফলন স্পষ্ট ছিল যে খারাপ লোক নিরাপত্তা ক্যামেরা দ্বারা বন্দী. এই কি যখন হয় আপনি একটি ইমেজ জুম যে শুধুমাত্র একটি নির্দিষ্ট নম্বর আছে এর সঙ্গে যুক্ত বিট. আপনি যে পেতে হবে কি না. এবং প্রকৃতপক্ষে, Daven চোখে হয়তো, ছয় পিক্সেল কিন্তু চার যে ঠিক কি রচনা সেখানে ক্ষীণ আলোক ছিল. সুতরাং সমস্যা সেট চার পরিণামে হবে আপনি বিশেষ করে, এই বিশ্বের অন্বেষণ কিছু প্রকৃতি দ্বারা আমরা ফাইল ইনপুট / আউটপুট, যেখানে কল I / O শুধু একটি অভিনব উপায় ইনপুট এবং আউটপুট বলছে. সুতরাং এ পর্যন্ত, পারস্পরিক ক্রিয়ার সব আমরা একটি কম্পিউটারের সাথে ছিল করেছি সঙ্গে মূলত হয়েছে আপনার কীবোর্ড এবং পর্দা, কিন্তু হার্ড ডিস্ক সঙ্গে এত না, বা বেশী অতিক্রম ফাইল সংরক্ষণ আপনি নিজের লিখুন. আপনার প্রোগ্রাম আছে দূর পর্যন্ত না, তৈরি করা, এবং সংরক্ষণ করা হয়েছে এবং তাদের নিজস্ব ফাইল আপডেট করা. ওয়েল, একটি ফাইল কি? ওয়েল, কোন JPEG ভালো কিছু. এই আপনি পারে একটি ইমেজ আছে বা ফেসবুকে আপলোড, বা যে কোন জায়গায় ওয়েবে দেখতে. প্রকৃতপক্ষে, যে ছবির আমরা শুধু Daven মধ্যে দেখেছি কোন JPEG ছিল. এবং কি আকর্ষণীয় JPEGs মত ফাইল সম্পর্কে তারা চিহ্নিত করা যায় যে, সাধারণত, বিট নির্দিষ্ট নিদর্শন দ্বারা. অন্য কথায়, যে এটা কি একটি জিআইএফ থেকে কোন JPEG আলাদা একটি বাক্য থেকে একটি পিং থেকে একটি এক্সেল ফাইল থেকে নথি? ওয়েল, এটা ঠিক আলাদা বিট নিদর্শন. এবং যারা বিভিন্ন নিদর্শন সাধারণত যারা ফাইল শুরু. আপনার কম্পিউটার একটি শব্দ প্রর্দশিত হবে, যাতে যখন ডক, বা একটি কম্পিউটার একটি JPEG প্রর্দশিত যখন, এটি সাধারণত দেখায় ফাইলের প্রথম কয়েক বিট. এবং এটি একটি প্যাটার্ন যদি স্বীকার করে, এটা ওহ, এই একটি ইমেজ, বলছেন. আমার এটা প্রদর্শন করা যাক একটি গ্রাফিক হিসাবে ব্যবহারকারী. অথবা, ওহ, এই একটি শব্দ ডক মত দেখায়. আমাকে একটি প্রবন্ধ হিসাবে ব্যবহারকারী এটি প্রদর্শন করা যাক. সুতরাং উদাহরণস্বরূপ, কি JPEGs, এটি সক্রিয় আউট মোটামুটি অত্যাধুনিক ফণা নীচে. কিন্তু সবচেয়ে প্রতি প্রথম তিন বাইট কোন JPEG এই তিনটি সংখ্যা দিয়ে শুরু. তাই বাইট শূন্য, এক, দুই এবং, হয় সবচেয়ে প্রতি কোন JPEG, 255, তারপর সংখ্যা 216 তারপর, সংখ্যা 255. এবং যদি আপনি পারবেন কি আগামী সপ্তাহে কাজ শুরু আসলে নীচে খোঁচা হয় JPEGs মত ফাইল ফণা এবং বিটম্যাপ ফাইল, এবং এইজন্য কি সবসময় হিসাবে দীর্ঘ জন্য আছে এর আপনি একটি কম্পিউটার ব্যবহার করে না. কিন্তু সাধারণত আছে না কি ভালো দশমিক সংখ্যার মত লেখা. কম্পিউটার বিজ্ঞানী না দশমিক কথা বলতে থাকে. তারা সত্যিই বাইনারি বলতে পারি না. সাধারণত, যখন আমরা চাই সংখ্যা প্রকাশ করতে, আসলে আমরা হেক্সাডেসিমাল ব্যবহার, যা আপনি প্রত্যাহার হতে পারে সমস্যা সেট, বলে, থেকে চ্যালেঞ্জ, যা এক, আপনি একটি ভিন্ন সিস্টেম সম্পর্কে চিন্তা করা. আমরা, অবশ্যই, পরিচিত মাধ্যমে নয় দশমিক শূন্য সঙ্গে. আমরা বাইনারি সম্পর্কে বললাম. এবং আমরা সত্যিই আছে না এখানে যে ব্যবহার আউট, কম্পিউটার ব্যবহার হবে. কিন্তু প্রোগ্রামারদের খুব ইচ্ছা প্রায়ই, কিন্তু সবসময় নয়, ঠিক, যার মানে হেক্সাডেসিমেল ব্যবহার আপনি আপনার বর্ণমালার 16 অক্ষর আছে দুই বা 10 বিরোধিতা. সুতরাং কিভাবে আপনি উচ্চ গণনা না হেক্সাডেসিমেল নয় আর? আপনি যান 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, একটি, শুধু প্রচল সি, ডি, ই, এফ, এ, বি. কিন্তু কি কী প্রতিটি হয় এই একটি একক প্রতীক. কোন 10 পর্যন্ত. প্রতিটি কারণ, কোন 11, কোনটাই নেই আপনার সংখ্যা, শুধু দশমিক পছন্দ শুধু বাইনারি মত এবং, ঠিক করা উচিত কনভেনশন দ্বারা একটি একক চরিত্র, হতে হবে. তারপর আমরা বর্ণমালা, যাতে হেক্সাডেসিমেল জন্য আমাদের নিষ্পত্তি. তাই কোন JPEG আপনি যদি মত চেহারা না যারা প্রথম তিন লেখে ছিল দশমিক হিসাবে না বাইট কিন্তু উদাহরণস্বরূপ, হেক্সাডেসিমাল হিসাবে? এবং কেন হেক্স যে দরকারী, এমনকি সব? ওয়েল, একটি উদাহরণ এ দ্রুত বর্ণন. আমি বিট আউট লিখুন, তাই যদি যে এই দশমিক সংখ্যার প্রতিনিধিত্ব এই একটি সামান্য বিরক্ত হতে পারে এখন ফিরে কয়েক সপ্তাহ থেকে, বাম এবং কিন্তু সঠিক বেশ সহজ হয়. 255 বৃহত্তম সংখ্যা আমরা ছিল আট বিট সঙ্গে প্রতিনিধিত্ব করতে পারে. এটা সব বেশী ছিল. তাই আস্তে যে শুধুমাত্র এক আকর্ষণীয় মধ্যম এক. এবং আপনি যে ধরনের আউট করতে হলে গণিত, আপনি প্রকৃতপক্ষে, যে অনুমান করা হবে এক যে প্যাটার্ন এবং শূন্য 216 প্রতিনিধিত্ব করে. তাই আসুন শুধু জন্য চুক্তির শর্ত দেওয়া এখন এই সঠিক হয়. কিন্তু কেন এই আকর্ষণীয়? ওয়েল, একটি বাইট, অবশ্যই, আট বিট. এবং এটি যদি আপনি মনে করেন যে সক্রিয় আউট চার বিট দুই অংশ হিসাবে একটি বাইট, এই মত. আমার কিছু কিছু স্থান যোগ করা যাক. তাই আগে পরে. আমি শুধু কিছু সাদা স্পেস যোগ করেছি এখানে কল্পনা এর অনুরোধে. কিভাবে আমরা এখন উপস্থাপন করা হতে পারে, বলে, হেক্সাডেসিমেল প্রতিটি বিট চতুর্ভুজ, চার বিট প্রতিটি সেট? উদাহরণস্বরূপ, বাম, তাই এখন, আমরা বাইনারি মধ্যে 1111 আছে. দশমিক সংখ্যা যে কি, আপনি গণিত আউট না? আপনি বেশী জায়গা আছে, দুই দুই জায়গা, হামাগুড়ি দিয়া জায়গা, এবং Eights জায়গা. শ্রোতা: 15. ডেভিড জে MALAN: 15 এর. তাই আমরা আট প্লাস চার যদি প্লাস দুই প্লাস এক, আমরা 15 পেতে. তাই আমি নিচে 15 নিচে লিখতে পারেন 1111, কিন্তু এখানে পুরো পয়েন্ট হেক্সাডেসিমেল হয়, দশমিক না. তাই নিচে লেখা 15, 1-5, আমি, হেক্স মধ্যে যে লিখতে যাচ্ছি আপনি, যদি আপনি আবার মনে হয়, যা চ মাধ্যমে শূন্য, কি 15 হতে যাচ্ছে? শ্রোতা: চ. ডেভিড জে MALAN: এটা এটা চ দেখা যাচ্ছে. এবং আপনি বলার অপেক্ষা রাখে না যে কাজ করতে পারেন, 10 যদি ভাল, তারপর, ঠিক আছে, চ 15. তাই প্রকৃতপক্ষে, আমরা নতুন করে লেখা হতে পারে চ চ সংখ্যার হিসাবে এই একই সেট. এবং তারপর আমরা গণিতের একটি বিট না, আমরা যে ঘ যে অনুমান করব. আট, বেশ সহজ কারণ আমরা Eights স্থানে একটি এক আছে. এবং তারপর, আমরা চ চ এর একটি দম্পতি আরো আছে. তাই মানুষের কনভেনশন দ্বারা করতে ঝোঁক তারা যখন হেক্সাডেসিমেল তারা শুধু আরো succinctly এই সামান্য লিখুন, যে সাদা স্থান সবচেয়ে পরিত্রাণ পেতে. এবং শুধু সুপার স্পষ্ট করা এই হেক্সাডেসিমেল যে পাঠক, মধ্যে সহজ কনভেনশন মানুষের আপনি শূন্য লিখতে হয় অন্য কোন অর্থ আছে, যা এক্স, একটি চাক্ষুষ আইডেন্টিফায়ার চেয়ে, এখানে একটি হেক্স সংখ্যা আসে. এবং তারপর, আপনি, চ দুটি সংখ্যা করা এই ক্ষেত্রে চ, তারপর ঘ, তারপর চ চ. তাই দীর্ঘ সংক্ষিপ্ত বিবরণ, হেক্সাডেসিমেল ঠিক থাকে দরকারী হতে প্রতিটি কারণ তার সংখ্যা, চ মাধ্যমে শূন্য, পুরোপুরি লাইন চার বিট প্যাটার্ন সঙ্গে আপ. আপনি দুই হেক্সাডেসিমেল সংখ্যা আছে সুতরাং, শূন্য আবার এবং আবার এফ, মাধ্যমে, যে পুরোপুরি দেয় আট বিট বা এক বাইট. এটি থাকে সুতরাং যে কেন সাধারনত দরকারী হতে. কোন বুদ্ধিজীবী নেই সত্যিই যে অতিক্রম কন্টেন্ট, তার প্রকৃত ইউটিলিটি তুলনায় অন্যান্য. এখন কি JPEGs শুধুমাত্র হয় না গ্রাফিক্স জন্য ফরম্যাটের ফাইল. আপনি আছে প্রত্যাহার করা হতে পারে বিশ্বের ভালো ফাইল, অন্তত কয়েক বছর ফিরে থেকে. তাই আসলে এই ছিল উইন্ডোজ এক্সপি ইনস্টল বিশ্বের পিসি লক্ষ লক্ষ উপর. এবং এই একটি বিটম্যাপ ফাইল, BMP, ছিল. এবং একটি বিটম্যাপ ফাইল, হিসাবে আপনি পরের দেখতে পাবেন সপ্তাহে মাত্র, বিন্দু একটি প্যাটার্ন মানে, তারা বলা করছি পিক্সেল, সত্যিই, বিট উপর মানচিত্রে. তাই যদিও, আকর্ষণীয়, এই ফাইল ফরম্যাট, BMP, সম্পর্কে, হয় ফণা নীচে যে, এটা মাত্র তিন বাইট অধিক যাতে, তার হেডার রচনা প্রথম কয়েক কামড় কথা বলতে. এটা আসলে একটু দেখায় প্রথম নজরে জটিল. এবং যদি আপনি পি সেট এই দেখতে পাবেন. এবং কিছু পেয়ে এই বিশেষ এখন আউট ঠিক আসলে, তাই গুরুত্বপূর্ণ নয় যে বিটম্যাপ শুরুতে ফাইল, একটি গ্রাফিকাল বিন্যাসে, সংখ্যার একটি আভা আছে. এখন মাইক্রোসফট, এই বিন্যাসে লেখক, যারা কল থাকে কিছু না ints এবং চিহ্ন এবং floats কিন্তু শব্দ এবং ঘ শব্দ এবং longs এবং বাইট. তাই তারা শুধু বিভিন্ন ধরনের তথ্য আছেন. তারা বিভিন্ন নাম আছেন একই জিনিস. কিন্তু আপনি পি সেট চার দেখতে পাবেন. কিন্তু এই বলে যে শুধুমাত্র একটি মানুষের যদি কিছু .BMP ফাইলে ডাবল ক্লিক তার বা তার হার্ড ড্রাইভ, এবং একটি উইন্ডো প্রর্দশিত হবে তাকে বা তার যে ইমেজ দেখাচ্ছে আপ, যে অপারেটিং কারণ ঘটেছে সিস্টেম সম্ভবতঃ না শুধুমাত্র লক্ষ্য .BMP ফাইল এক্সটেনশন ফাইল নাম, কিন্তু আসলে আছে কিছু বিট প্যাটার্ন কনভেনশন খুব শুরুতে যে বিটম্যাপ ফাইল. কিন্তু এখন ফোকাস যেমন একটি জটিল ফাইল, কিন্তু এর পরিবর্তে ভালো কিছু উপর. আমি gedit এখানে ধরুন ঠিক সূত্রপাত আছে বেশ সহজ একটি প্রোগ্রাম যা. আমি কিছু উপরে রয়েছে পেয়েছেন. এখন আমি পেয়েছেন # অন্তর্ভুক্ত "structs.h" কিন্তু আমি একটি মুহূর্ত যে ফিরে পাবেন. কিন্তু এখন এই জন্য দরকারী. সুতরাং এই একটি প্রোগ্রাম যে বাস্তবায়ন করতে যাচ্ছে রেজিস্ট্রার এর ডাটাবেস মত. তাই ছাত্র একটি ডাটাবেস, এবং পৃথিবীর প্রতিটি ছাত্র সম্ভবত কিছু একটি নাম এবং একটি ঘর এবং আছে অন্যান্য উপাদান, কিন্তু আমরা এটা সহজ রাখা হবে. প্রত্যেক ছাত্র একটি নাম এবং একটি ঘর আছে. আমি একটি লিখতে চেয়েছিলেন, তাই যদি জীবনে যার উদ্দেশ্য প্রোগ্রাম শুধু থেকে বারবার ছিল তিন শূন্য, তিন ছাত্র আছে যদি হার্ভার্ড বিশ্ববিদ্যালয়ের. এবং আমি GetString ব্যবহার, পেতে চান, প্রতিটি ছাত্র এর নাম এবং ঘর, এবং তারপর শুধুমাত্র যারা প্রিন্ট আউট. এই ধরণের সপ্তাহ ভালো হয় এক, সপ্তাহ দুই জিনিস এখন, আমি শুধু একটি যেখানে আপনি চান লুপ বা যে মত কিছু. এবং আমি GetString কয়েক কল করতে চান বার, এবং তারপর একটি কয়েক বার চ মুদ্রণ. তাই আমি যদিও, এই কাজ করতে পারে, কিভাবে যখন একটি নাম এবং একটি ঘর উভয় প্রত্যেক শিক্ষার্থীর জন্য জড়িত করা হয়? তাই আমার প্রথম প্রবৃত্তি হতে পারে ভালো কিছু করতে হবে. আমি প্রথম ভাল, আমাকে দিতে বলতে পারে,, , নাম বলা স্ট্রিং একটি অ্যারে বলে. এবং আমি একটি হার্ডকোর তিন এখানে চাই না. আমি কি সেখানে লাগাতে চান? ঠিক যে কারণ, ছাত্র তাই উপরের ঘোষিত একটি ধ্রুবক, আমি হার্ডকোর, না আছে ঠিক তাই একাধিক জায়গায় তিনটি. এই ভাবে, আমি এটি এক জায়গায় পরিবর্তন করতে পারেন এবং এটা সব জায়গায় পরিবর্তন প্রভাবিত করে. এবং তারপর, আমি কি হতে পারে স্ট্রিং ছাত্র ঘর. এবং এখন, আমি ভালো কিছু করতে পারে আমি ছাত্র <; জন্য (আমি = 0 int i ++. তাই আমি দ্রুত টাইপ করছি, কিন্তু এই এখন সম্ভবত পরিচিত বাক্য গঠন. এবং এখন, এই আরো সাম্প্রতিক ছিল. আমি-তম রাখা করতে চান ছাত্র এর নাম, আমি এই কাজ করি. এবং তারপর, না নাম কিন্তু ঘর আমি বন্ধনী. আমি এই GetString না, এবং দিন আমাকে ফিরে যান এবং এই লাইন ঠিক করা. একমত? রাজি নই? এটা খুব ব্যবহারকারী বন্ধুত্বপূর্ণ না. আমি কি ব্যবহারকারী বলেন না. কিন্তু এখন, আমি যদি পরে, এর যাক চেয়েছিলেন বলে, এই জিনিস প্রিন্ট out-- তাই করণীয় পরে. আমি আরো সঙ্গে কাজ করতে যাচ্ছি তর্কসাপেক্ষ হয় এই আপাততঃ একটি সঠিক বাস্তবায়ন নাম এবং ঘর, তিনটি পেয়ে একটি ব্যবহারকারীর কাছ থেকে প্রতিটি তাদের মোট,. কিন্তু এই খুব ভাল নকশা অধিকার, না? কি একটি ছাত্র না শুধু একটি নাম আছে এবং একটি ঘর, কিন্তু একটি আইডি নম্বর, এবং একটি টেলিফোন নম্বর, এবং একটি ইমেইল ঠিকানা, এবং হয়তো হোম পৃষ্ঠা, এবং হয়তো একটি টুইটার হ্যান্ডেল, এবং অন্যান্য বিবরণ কোন সংখ্যা একজন ছাত্র বা একজন ব্যক্তির সঙ্গে যুক্ত, আরো সাধারণভাবে. আমরা যোগ করা শুরু করবে এই প্রোগ্রামের কার্যকারিতা? ওয়েল, আমি বল সহজ উপায় মত মনে , ভালো কিছু করতে এর কথা বলা যাক, হতে পারে, আইডি ছাত্র int. তাই আমি সেখানে তাদের সব আইডির লাগাতে পারেন. এবং তারপর, কিছু ফোন নম্বর মত, আমি কিভাবে নিশ্চিত না এখনও যে প্রতিনিধিত্ব. সুতরাং এর এগিয়ে এবং শুধু কল যান এই ছাত্র, TWITTERs যা একটু অদ্ভুত, কিন্তু আছে হয় এবং ক্ষেত্র আরো একটি গুচ্ছ. আমি কার্যকরভাবে শুরু করেছি কপি এবং এখানে পেস্ট করুন. এবং এই বেশ বড় হয়ে যাচ্ছে প্রশংসনীয় দ্রুত জবরজং, ডান? সেখানে যদি এটি চমৎকার হবে না বিশ্বের একটি ডাটা স্ট্রাকচার পরিচিত না কোন int অথবা একটি স্ট্রিং, কিন্তু কিছু উচ্চতর স্তর, একটি বিমূর্ততা, তাই একজন ছাত্র হিসাবে পরিচিত, কথা বলতে? সি বিল্ট ইন সঙ্গে আসে না ছাত্রদের জন্য কার্যকারিতা, কিন্তু আমি এটা যেমন দিতে চেয়েছিলেন কি? ওয়েল, এটা আমি যাচ্ছি, দেখা যাচ্ছে , structs.h এখানে নামক একটি ফাইল খোলার জন্য এবং আপনি ঠিক তা করতে পারে. এবং আমরা এখন এই কাজ শুরু করতে যাচ্ছেন. এবং পি সেট তিনটি ফণা নীচে, যদি আপনি ইতিমধ্যে এই কাজ করছি. একটি গ্রাম RECT যেমন জিনিস নেই বা প্রোগ্রামিং ভাষা সি একটি গ্রাম উপবৃত্তাকার স্ট্যানফোর্ড এ লোকেরা যারা বাস্তবায়ন এখানে এই পদ্ধতির ব্যবহার করে তথ্য ধরনের, তাদের নিজস্ব নতুন তথ্য ঘোষণা একটি নতুন শব্দ ব্যবহার করে ধরনের বলা struct, এবং অন্য এক বলা থেকে typedef. এবং প্রকৃতপক্ষে, যদিও সিনট্যাক্স স্টাফ থেকে একটু ভিন্ন মনে হচ্ছে আমরা, আগে দেখা করেছি নীতি, এটি সুপার সহজ. এই মাত্র "একটি টাইপ নির্ধারণ করুন." অর্থ এটা একটি হতে যাচ্ছে গঠন, এবং একটি গঠন শুধু একটি ধারক ভালো হয় একাধিক জিনিষ জন্য. এবং যে গঠন যাচ্ছে নাম একটি স্ট্রিং নামক আছে, এবং একটি স্ট্রিং ঘর বলা হয়. আর এর ঠিক সুবিধার জন্য, কল, এই পুরো তথ্য গঠন ছাত্র. তাই মুহূর্তে আপনি পেতে সেমিকোলন, আপনি এখন আছে আপনার নিজের তথ্য তৈরি বলা হয় টাইপ ছাত্র এখন যে কোন int পাশাপাশি দাঁড়িয়েছে এবং ভাসা, এবং গৃহস্থালির কাজ, এবং স্ট্রিং, এবং গ্রাম RECT, এবং গ্রাম ডিম্বাকৃতি, এবং কোনো সংখ্যা অন্যান্য জিনিস মানুষ আবিষ্কার করেছেন. তাই এই সম্পর্কে দরকারী কি এখন আমি ফিরে যেতে যদি হয় 0 struct এবং এই শেষ আমি লিখেছি, যা বাস্তবায়ন, এখানে অগ্রিম, যে সব লক্ষ্য অনিবার্য messiness যে আমি যোগ শুরু ঘটছে সম্পর্কে ফোন নম্বর এবং Twitters এবং সব এই অন্যান্য বিষয় একটি ছাত্র এর সংজ্ঞা, এখন এটি succinctly আবৃত এর ছাত্র মাত্র এক অ্যারে হিসাবে. এবং যারা ছাত্র প্রতিটি এখন এটি ভেতরে একাধিক বিষয় আছে. তাই শুধু একটা প্রশ্ন ছেড়ে. কিভাবে আপনি নামের এ পেতে না, এবং ঘর, এবং আইডি, এবং অন্য যাই হোক না কেন ছাত্র ভিতরে? সুপার সহজ, হিসাবে ভাল. নতুন বাক্য গঠন, কিন্তু একটি সহজ ধারণা. অ্যারের মধ্যে আপনি কেবল সূচক, আমরা গত সপ্তাহে এবং এই করেনি. এবং কি পরিষ্কারভাবে এর বাক্য গঠন নতুন টুকরা? শুধু., যার মানে "ভিতরে যান গঠন এবং ক্ষেত্র নামক পেতে নাম,, ঘর বলা ক্ষেত্র পেতে ছাত্র ক্ষেত্র বলা হবে পেতে. " তাই পি সেট তিনটি, যদি আপনি এখনও যে কাজ, এখনও অধিকাংশ লোকেরা , যদি আপনি বুঝতে পারি যে হয় ভালো জিনিস ব্যবহার শুরু গ্রাম rects এবং গ্রাম ovals এবং অন্যান্য জিনিস বলে মনে হচ্ছে না যে সপ্তাহ শূন্য, এক, অথবা দুই থেকে আসা, যে স্ট্যানফোর্ড কারণ বুঝতে পারি যে কিছু নতুন ধরনের তথ্য ঘোষণা করেন. এবং প্রকৃতপক্ষে, যে ঠিক কি আমরা করব পি সেট চার,, হিসাবে ভাল না, যখন আমরা জিনিষ নিয়ে শুরু ছবি, বিটম্যাপ, এবং আরো ভালো. যাতে মাত্র একটি টিজার এবং একটি করে আসতে হয় কি জন্য মানসিক মডেল. এখন, আমি গড়িমসি একটি বিট এই সকালে. আমি কি দেখতে ধরনের অদ্ভুত ছিল মাইক্রোসফট ওয়ালপেপার আসলে আজ মনে হচ্ছে. এবং এটি 2006 সালে কেউ সক্রিয় আউট আসলে প্রায় অবিকল গিয়েছিলাম একই স্পট বাস্তবে আলোকচিত্র কি এই দিন যে মত দেখায়. ক্ষেত্র এখন একটু প্রবৃদ্ধ. তাই ইমেজ এখন বলতে, এখানে Daven ফিরে আনা যাক পর্দা এবং নিকোলাস উপর, এবং শুধু আপনাকে স্মরণ করিয়ে যে আপনি লাঞ্চ জন্য আমাদের সঙ্গে যোগদান করতে চান তাহলে আমাদের স্বাভাবিক URL এ এই শুক্রবার, মাথা এখানে. তাই যেখানে আমরা সোমবার বন্ধ ছেড়ে? আমরা অধিকার, এই সমস্যা চালু? এই আপাতদৃষ্টিতে একটি সঠিক ছিল swap 'র বাস্তবায়ন, যেখানে আপনি দুটি ints হয় গ্রহণ এক, বি নামক এক, একটি বলা লরা এখানে ঠিক মত, তাদের অদলবদল দুধ এবং জল সঙ্গে মঞ্চে, একটি অস্থায়ী ব্যবহার করে পরিবর্তনশীল, অথবা একটি খালি কাপ, আমরা একটি এবং একটি মধ্যে খ করা যেতে পারে, যাতে জিনিষ একটি জগাখিচুড়ি না করে খ. আমরা একটি পরিবর্তনশীল ব্যবহৃত. এটা temp হয় বলা হচ্ছে. কিন্তু মৌলিক কি ছিল সোমবার এই কোড দিয়ে সমস্যা? এখানে সমস্যা কি ছিল? হ্যাঁ. শ্রোতা: এটা আরো স্থান পর্যন্ত. ডেভিড জে MALAN: আরো গ্রহণ স্থান, আমি একটি ভেরিয়েবল ব্যবহার করছি কারণ, এবং যে ঠিক আছে. এটা সত্য, কিন্তু আমি নই এটা ঠিক আছে বলে যাচ্ছে. এটা গ্র্যান্ড শুধুমাত্র 32 বিট জিনিস প্রকল্প, তাই একটি বড় চুক্তি. অন্য চিন্তা? শ্রোতা: এটা শুধুমাত্র বিনিময়সমূহ স্থানীয়ভাবে ভেরিয়েবল. ডেভিড জে MALAN: যথাযথভাবে. এটা শুধুমাত্র স্থানীয়ভাবে ভেরিয়েবল বিনিময়সমূহ. যে কোনো সময় আপনি একটি ফাংশন কল কারণ আমি Annenberg এ থেকে ট্রে ছিল শেষ সময়, আপনি নীচে মূল আছে. যত তাড়াতাড়ি আপনি একটি ফাংশন বলা কল swap 'র, swap' র x এবং y পাবেন না, মূল মান. আমরা কি দাবি হয়নি, swap 'পান? শ্রোতা: কপি. ডেভিড জে MALAN: তাদের কপি. সুতরাং আপনি যদি এক এবং দুই পায় শেষ সময় থেকে উদাহরণ প্রত্যাহার, কিন্তু এক এবং দুই একটি কপি যে সফলভাবে আনা হয়. কিন্তু দুর্ভাগ্যবশত শেষ, যারা মান এখনও একই. সুতরাং আমরা এই দেখতে পারেন আমাদের নতুন বন্ধু, আশা, GDB, আপনি বা টিএফএস এবং CA এর আছে নিম্নরূপ দিকে আপনি পথনির্দেশক করা হয়েছে. তাই কোন swap 'রিকল যাক ভালো দেখায় ভালো আপাততঃ সৌন্দর্য খুলুন. আমরা দুই, এক y, x সক্রিয়া. মুদ্রণ চ এর একটি গুচ্ছ ছিল. কিন্তু তারপর, কি কল এখানে, বিনিময় করা, যা ছিল ঠিক কোড আমরা শুধু একটা মুহূর্ত আগে দেখেছি. যা প্রথমে সঠিক এক নজরে, কিন্তু কাজের, এই প্রোগ্রাম কারণ কাজ করে না, এটি স্থায়ীভাবে x এবং y অদলবদল না. সুতরাং, একটি দ্রুত গরম এর এই দেখুন এখানে, GDB, একটি ./noswap সঙ্গে আপ. অপ্রতিরোধ্য তথ্য একটি গুচ্ছ যে আমি এখন জন্য কন্ট্রোল এল সঙ্গে পরিত্রাণ পেতে হবে. এবং এখন, আমি যাচ্ছি এগিয়ে যান এবং এটি চালানোর জন্য. এবং দুর্ভাগ্যবশত, যে যে দরকারী ছিল না. এই ভিতরে প্রোগ্রাম দৌড়ে প্রোগ্রাম,, GDB, একটি ডিবাগার বলা কিন্তু এটা আমার প্রায় অকর্মা যাক না. আমি আসলে বিরতি করতে পারেন কিভাবে এই প্রোগ্রামের ভিতরে মৃত্যুদন্ড? তাই বিরতি. এবং আমি কোনো বিরতি পারে লাইন সংখ্যা, এক, 10, 15. কিন্তু আমি প্রতীকী ভঙ্গ করতে পারেন বিরতি প্রধান বলার অপেক্ষা রাখে না. এবং যে একটি বিরতি সেট করতে যাচ্ছে বিন্দু, দৃশ্যত প্রধান লাইন 16 এ. এবং যেখানে লাইন 16 হয়? এর কোড পর্যন্ত যান এবং noswap পর্যন্ত যান. এবং প্রকৃতপক্ষে, লাইন 16 প্রথম প্রোগ্রাম. সুতরাং এখন, আমি এগিয়ে যান এবং টাইপ করুন , এই সময় চালানো লিখুন, এটি বিরাম দেওয়া. সুতরাং এর কাছাকাছি অকর্মা যাক. কেন x শূন্য হয় x-- মুদ্রণ? এবং ডলার চিহ্ন উপেক্ষা করা. যে কল্পনাকারী জন্য শুধু প্রোগ্রাম ব্যবহার. কেন মুহূর্তে x শূন্য হয়? হ্যাঁ. শ্রোতা: এটা আগে বিরতি দেওয়া লাইন 16, না আসলে লাইন 16. ডেভিড জে MALAN: যথাযথভাবে. , GDB, ডিফল্টরূপে, বিরতি দেওয়া হয়েছে শুধু লাইন 16 আগে মৃত্যুদন্ড. সুতরাং এটি মৃত্যুদন্ড কার্যকর করা হয়েছে, যা কিছু অজানা মান x এর মানে. এবং আমরা যে এটা ভাগ্যবান শূন্য মত পরিষ্কার কিছু. তাই এখন আমি পরের টাইপ করুন, এখন এটি 16 মৃত্যুদন্ড কার্যকর. আমার 17 চালানো জন্য অপেক্ষা করছে. আমাকে এগিয়ে এবং মুদ্রণ এক্স যান. এটা এক. আমাকে এগিয়ে এবং মুদ্রণ Y যান. আমি এখন কি হবে? শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: একটু জোরে. শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: নেই বেশ একটি ঐক্যমত্য. তাই হ্যাঁ, আমরা কিছু আবর্জনা মান দেখুন. এখন, Y আছে 134514064 হয়. ওয়েল, এটা কিছু আবর্জনা মান. আমার প্রোগ্রাম উপস্থিত RAM ব্যবহার বিভিন্ন কাজের জন্য. অন্যান্য কার্যাবলী আছে. অন্য মানুষ আমার কম্পিউটার ভিতরে লিখেছে. তাই যারা বিট জন্য ব্যবহার করা হয়েছে অন্যান্য মান, এবং আমি কি এইজন্য করছি কিছু অবশিষ্টাংশ হয় যে মেমরি পূর্বে ব্যবহার. তাই কোন বড় চুক্তি, কারণ যত তাড়াতাড়ি আমি পরের টাইপ করুন এবং তারপর Y মুদ্রণ হিসাবে, এটি সক্রিয়া করা হচ্ছে আমি চাই যে মান. সুতরাং এখন, এর একটু দ্রুত এগিয়ে যান. পরের জন্য এন. এর আবার কি শুরু করা যাক. এর আবার কি শুরু করা যাক. কিন্তু আমি আঘাত করতে চাই না এখানে, কারণ আমি যদি ভিতরে কি ঘটছে তা দেখতে চান swap,, কমান্ড কি? শ্রোতা: ধাপ. ডেভিড জে MALAN: ধাপ. সুতরাং এই একটি সম্পর্কে আলোচনা বরং এটি উপর বেশী ফাংশন,. এবং এখন, এটি একটি সামান্য রহস্যপূর্ণ সত্যি বলতে, কিন্তু এই শুধু আমি এখন লাইন 33 আছি আমাকে বলছে. এবং এর আবার এই কাজ করা যাক. প্রিন্ট temp হয়. আবর্জনা মান, নেতিবাচক এই সময়, কিন্তু যে শুধু এখনও একটি আবর্জনা মান. তাই এর পরের, মুদ্রণ, temp করতে দেওয়া. এটা, 1 সক্রিয়া যা একটি ওরফে x এর মান ছিল. এখন, যেখানে আমাদের একটি এবং থেকে আসছে x? ভাল, আমরা প্রধান লক্ষ্য এই মান x এবং y বলা হয়. আমরা তখন নিম্নরূপ তাদের অদলবদল পাস. এক্স কমা y, ও প্রথম এসেছিলেন. এবং তারপর, swap 'তাদের x এবং y কল করতে পারে. কিন্তু স্বচ্ছতার জন্য, এটা A এবং B তাদের কলিং. কিন্তু a ও b এখন হতে যাচ্ছে যথাক্রমে x এবং y, কপি. আমি, টেম্প ফিরে GDB যাও যদি তাই এখন এক এবং একটি এখন এক. আমি এখন পরবর্তী করবেন এবং কিন্তু যদি মুদ্রণ করতে একটি একটি ইতিমধ্যে উপর সরানো হয়েছে. দুধ সাবেক ঢেলে হয়েছে কমলার রস এর গ্লাস, বা তদ্বিপরীত. এবং এখন আমি আবার পরের, এবং যদি আমি একটি মানসিক সুস্থতা চেক আউট হিসাবে মুদ্রণ, এখনও দুই, কিন্তু ক্যাচ এখন এক. সত্যি, এটা এখনও আছে. আমি কি temp না যত্ন. কিন্তু যত তাড়াতাড়ি আমি এখন টাইপ,, এর কথা বলা যাক এখন আমি শেষে না, ফিরে যান অবিরত প্রোগ্রাম. এবং দুর্ভাগ্যবশত, হল x এখনও এক এবং y এখনও দুটি. তাই সেখানে, GDB উপযোগ কি ছিল? এটা আমার ঠিক করতে সাহায্য না সমস্যা কোনটাই, কিন্তু আশা আমাকে সাহায্য বুঝতে দ্বারা এটা বুঝতে যে হ্যাঁ, আমার যুক্তি সঠিক, কিন্তু আমার কোড পর্যন্ত না হয় একটি স্থায়ী প্রভাব. সুতরাং যে আমরা একটি সমস্যা এখন আজ সমাধান করা যাচ্ছে. কিন্তু এই উপায় দ্বারা সেখানে পেতে. স্ট্রিং একটি মিথ্যা. এটা খুব, না একটি ডাটা টাইপ যে এটা সি বিদ্যমান কিছু জন্য একটি প্রতিশব্দ হয়েছে অন্য কিছু জন্য সময়, এবং আমরা হিসাবে অনুসরণ করে প্রকাশ করতে পারেন. আমাকে এগিয়ে যান এবং খুলুন একটি প্রোগ্রাম তুলনা 0 বলা হয়. এবং এই এক আউট টাইপ, বরং আমরা কোড দিয়ে হেটে যেতে শুরু করব আমি ইতিমধ্যে লিখেছেন, কিন্তু এটি শুধুমাত্র একটি কয়েক লাইন. তাই এই তুলনা-0. এবং প্রথম জিনিস আমি করছি লেখার একটা লাইন পেয়ে. কিন্তু আমি কি লক্ষ্য প্রথমবার করছেন. কি স্পষ্ট লাইন 21 সম্পর্কে ভিন্ন? বাস্তবিক, একটি মিনিট অপেক্ষা করুন. এই কপি দুটি. এমনকি ডান প্রোগ্রাম নয়. সমস্ত অধিকার, ভক্ষক সতর্কতা. সমস্ত অধিকার, তাই কিছু মনে হয় না. ভবিষ্যতে যে প্রশ্নের উত্তর. এখানে 0 তুলনা, এবং আমি হয় টেক্সট একটি লাইন পেতে সম্পর্কে. প্রোগ্রাম এর অনেক সহজ. তাই এই সহজবোধ্য. এই সপ্তাহের এক, সপ্তাহ দুই জিনিস ভালো হয় মুহূর্তে. স্ট্রিং গুলি = GetString. এখন, আমি নিচে এখানে আবার বলে. স্ট্রিং T = GetString,. এই এবং তারপর, শেষ জিনিস প্রোগ্রাম, তার নাম সুপারিশ, আমি তাদের তুলনা করার চেষ্টা করতে যাচ্ছি হয়. সুতরাং এর যদি প্রথম পংক্তি, = T, তারপর আমি সমান আপনি একই জিনিস টাইপ বলে যাচ্ছে. অন্যথায়, আমি বলতে যাচ্ছি আপনি বিভিন্ন জিনিস টাইপ করুন. সুতরাং এর কম্পাইল এবং এই প্রোগ্রাম চালানো. তাই শূন্য তুলনা করা. ভাল দেখায়. কোন সংকলন ত্রুটি. আমাকে এখন এগিয়ে যান এবং ./compare 0 টাইপ করুন. আমাকে এগিয়ে যান এবং কিছু বলতে চলুন শুরু করা যাক : Daven এবং কিছু: রব. এবং আমি বিভিন্ন জিনিস টাইপ করুন. এ পর্যন্ত, তাই ভাল. প্রোগ্রাম সঠিক বলে মনে হয়. কিন্তু এর আবার এটি চালানো যাক. কিছু বলুন, গেব. কিছু বলুন, গেব. ঠিক আছে. হয়তো আমি স্পেস বার আঘাত বা ভীতু কিছু. এর আবার কি শুরু করা যাক. , Zamyla তাই. , Zamyla. বিভিন্ন জিনিস. তাই কি হতে যাচ্ছে? সুতরাং আমরা এই দুই লাইন আছে কোড, GetString, দুইবার বলা হচ্ছে. এবং তারপর, আমি কেবল নই গুলি এবং টন তুলনা করার চেষ্টা করছে. কিন্তু যাওয়া হয় তারপর সত্যিই কি? ভাল, আমার হস্তাক্ষর এর সম্পর্কে কিছুটা এই যেমন কসাই. এবং এর আসলে নিক্ষেপ করা যাক এই পর্যন্ত এখানে, হিসাবে ভাল. সুতরাং আমরা একটি লাইন মত আছে স্ট্রিং গুলি = GetString. সুতরাং যে কেবল প্রথম যে প্রোগ্রাম থেকে আকর্ষণীয় লাইন. কিন্তু এই সব সময় হয়েছে কি ফণা নীচে যাচ্ছে? ওয়েল, বাম হাতের উপর দিকে স্ট্রিং, যা পরিবর্তনশীল কিছু টাইপ করা হয়, এবং এটা বলা হচ্ছে. তাই আমি এই মেমরি ব্যবহার করা হয় জানেন, অথবা RAM, একরকম আমার কম্পিউটারে. তাই আমি abstractly একটি করা যাচ্ছে না একটি বর্গক্ষেত্র যে আঁকা. 32 বিট, এটি সক্রিয় আউট, কিন্তু ভবিষ্যতে আরো যে. এবং তারপর, কি এখানে হচ্ছে? ওয়েল, সম্ভবত GetString ব্যবহারকারী থেকে একটি পংক্তি পায়. এবং GetString না , Zamyla বা গেব বা Daven. সুতরাং এর প্রথম নির্বাচন দেওয়া যারা, Daven ছিল. যাতে কার্যকরভাবে, কি GetString, পেয়েছিলাম আমার প্রথম যে ক্ষেত্রে ডি একটি V-ই এন ছিল. এবং তারপর, অন্য কি কি এটা আমার গোপনে দিতে? শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: হ্যাঁ, / 0 বা নাল অক্ষর. তাই এটা কার্যকরভাবে সম্পর্কে একটি স্ট্রিং দিয়েছেন. কিন্তু আমরা ইতিমধ্যে আগের থেকে জানি একটি স্ট্রিং শুধুমাত্র একটি অ্যারের যে দেখায় অক্ষর, এবং এটি দ্বারা বাতিল হচ্ছে এই বিশেষ প্রহরী চরিত্র, / 0. কিন্তু এই যদি সত্য হয় এবং এই একটি বর্গ হয়, এই পরিষ্কারভাবে অনেক বড় আয়তক্ষেত্র হয়. এবং প্রকৃতপক্ষে, এই হয়, আমি শুধুমাত্র 32 বিট দাবি. এবং এই পরিষ্কারভাবে অধিক 32 বিট, সম্ভবত এই কারণ আট প্লাস আট প্লাস আট প্লাস আট প্লাস আট, ঠিক হওয়া ASCII বাইট কারণ. কিভাবে নরক আমরা মাপসই করা যাচ্ছে এখানে এই সামান্য বাক্সে Daven? ভাল, কি আসলে GetString করছে? ওয়েল, এই গ্রিড এখানে উপস্থাপন আমার কম্পিউটার এর মেমরি বা RAM উপস্থিত. সুতরাং এর ইচ্ছামত যদি বলে এই প্রতিটি, একটি বাইট প্রতিনিধিত্ব করে তারপর আমরা প্রতিটি মনে করতে পারেন বাইট একটি ঠিকানা হচ্ছে, 33 অক্সফোর্ড স্ট্রিট, বা 34 মত অক্সফোর্ড স্ট্রিট, বা 35 অক্সফোর্ড রাস্তার. তাই বাড়িতে অ্যাড্রেস ঠিক মত এবং ভবন ঠিকানা আছে, তাই ব্যক্তিগত বাইট না মেমরি অ্যাড্রেস বা সংখ্যা আছে যে স্বতন্ত্র তাদের সনাক্ত করা. এখন, এই নির্বিচারে. কিন্তু আমি যাচ্ছি, এটা সহজ রাখা শুধু প্রচল হেক্সাডেসিমেল ব্যবহার, কিন্তু 0x অন্যান্য কিছুই মানে আর "এই হেক্সাডেসিমেল হয়." এবং আমি যে দাবি করা যাচ্ছে না "ডি" মেমরি বাইট এক সময়ে শেষ পর্যন্ত. আমি কিছুই অন্য মধ্যে যাওয়া পেয়েছিলাম মেমরি, তাই Daven প্রথম স্পট আছে বাইটের এক সময়ে. এই তারপর, 0X2 হতে যাচ্ছে. এই 0X3 যাচ্ছে. এই 0x4 হতে যাচ্ছে. এই 0x5 যাচ্ছে. এই 0x6 হতে যাচ্ছে. কিন্তু আপনি একবার ভাবতে শুরু কি কম্পিউটার এর কাজ সম্পর্কে ফণা নীচে, আপনি আবিষ্কার করতে শুরু করতে পারেন কিভাবে আপনি কিছু বছর আগে, হবে নিজেই সি বাস্তবায়িত হয়েছে. সম্ভবত GetString, কি returning-- কারণ এটি এটা না ভালো মনে ফিরে Daven, জন্মগতভাবে, তিনি নিশ্চয় যাচ্ছে না, কারণ এই সামান্য box-- অনুযায়ী তাই কি GetString, সম্ভবত ফিরে? শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: Daven অবস্থান. এবং এটা এই কাজ করা হয়েছে কখনও এক সপ্তাহ থেকে. কি GetString, সত্যিই ফিরে একটি স্ট্রিং, কোনটাই হয় না. যে সামান্য সাদা মিথ্যা এক. এটা এর ঠিকানা ফিরে মেমরি স্ট্রিং, অনন্য ঠিকানা. Daven 33 অক্সফোর্ড রাস্তার এ বসবাস করেন. কিন্তু আরো succinctly, গেভিন বসবাস 0x1, এ সংখ্যা এক ঠিকানা. তাই এই করা হয় সামান্য বক্স, তারপর, পরিষ্কার করা স্ট্রিং এর ঠিকানা. তাই এই সব সময়, এই আছে যাচ্ছে. কিন্তু এই ইঙ্গিত কি এখন সব যদি আছে এটা ভিতরে একটি সংখ্যা, যারা হয় আপনি বন্ধ করার জন্য, প্রোগ্রামার, কোনো সংখ্যা নির্বাণ থেকে কোনো ভেরিয়েবল এবং ঠিক জাম্পিং মেমরি যে তাল করতে? এবং প্রকৃতপক্ষে, আমরা দেখতে পাবেন যে হুমকি পরবর্তী সময়. কিন্তু এখন জন্য, এই অপর্যাপ্ত মনে. আমি বলতে থাকে, আমাকে একটি পেতে স্ট্রিং, আপনি আমাকে Daven দিতে. কিন্তু আপনি কি সত্যিই আমাকে Daven দিতে না. আপনি আমাকে দিতে সব Daven এর ঠিকানা. আমি তখন নিশ্চিত জানি কিভাবে যেখানে Daven শুরু হয় এবং ends-- গল্প এর weird-- পেয়ে Daven শুরু হয় এবং শেষ হয় যেখানে, এবং পরবর্তী তারপর মেমরি স্ট্রিং শুরু হয়? হ্যাঁ, আপনি হস্তান্তর করছি আমার Daven শুরুতে, মূলত, কিভাবে আমি জানি না তার নামের শেষে কোথায়? যে বিশেষ নাল অক্ষর, যা সমস্ত আরো গুরুত্বপূর্ণ এখন নীচে স্ট্রিং যদি ফণা কেবল চিহ্নিত করা হয় স্বতন্ত্র মেমরির মধ্যে তাদের অবস্থান দ্বারা. তাই এই সব সময়, যে কি যাওয়া হয়েছে. সুতরাং আমরা এখন তাকান এখানে কোড, ব্যাখ্যা আপনি লাইন 26 বাগ হবে না. কেন, Zamyla এবং, Zamyla ভিন্ন? কেন গেব এবং গেব ভিন্ন? হাঁ, ফিরে. শ্রোতা: তারা বিভিন্ন ঠিকানা আছে. ডেভিড জে MALAN: শুধু কারণ তারা বিভিন্ন ঠিকানা আছে. আপনি GetString কল কারণ যখন আবার, আমি এখানে দ্রুত করব, যা এই দ্বিতীয় লাইন, স্ট্রিং যদি টন, আমি যে প্রোগ্রাম করেনি, GetString, অন্য কল সমান. আমি কল পরবর্তী সময় GetString,, আমি যাচ্ছি একটি মেমরি বিভিন্ন অঞ্চলে পেতে. GetString, অনুমতি দেওয়া হয় অপারেটিং জিজ্ঞাসা আরো এবং আরো মেমরি জন্য সিস্টেম. এটি একই পুনরায় ব্যবহার করা যাচ্ছে না ছয় বাইট প্রতি একক সময়. এটি একটি নতুন পেতে যাচ্ছে মেমরি খণ্ড, যা টন পেতে যাচ্ছে মানে এখানে অন্য কোনো মান. আমি কি তাই যখন গুলি = সমান টন, আপনি তুলনা করছি না এই এবং একটি বিরুদ্ধে বিরুদ্ধে D: এই এবং এই বিরুদ্ধে ভী. আপনি এই তুলনা করছি , যা এই বিরুদ্ধে অকপটে সুন্দর useful-- useless-- হয় প্রশংসনীয় বেহুদা সত্যিই, কারণ যারা স্ট্রিং মেমরি যেখানে বজায় রাখে? এবং প্রকৃতপক্ষে, আমরা না. এবং আমরা যাচ্ছেন না বিশেষ করে যত্নশীল শুরু. শুধু বাগ arise তে পারে যে পরিমাণে এবং নিরাপত্তা হুমকি ইচ্ছা arise তে পারে আমরা আসলে এই সম্পর্কে যত্ন শুরু. তাই এর এই সমস্যা সমাধানের জন্য. আপনি সুপার কেবল এটা ঠিক, দেখা যাচ্ছে. এবং আমি আগে, আসলে যাক আবার যে প্রকাশ, কি হবে একটি CS50 বর্গ, যদি আপনি কি এবং আপনি বাস্তবায়ন ছিল দুই স্ট্রিং বিরুদ্ধে একটি তুলনা. আপনি পরিষ্কারভাবে মাত্র গুলি = টন সমান ব্যবহার করতে পারবেন না. তবে যুক্তি, কিভাবে আপনি এই স্ট্রিং তুলনা হবে সি কোড ব্যবহার করে এই স্ট্রিং বিরুদ্ধে? হ্যাঁ. শ্রোতা: শুধু কি লুপ জন্য [শ্রবণাতীত] ডেভিড জে MALAN: পারফেক্ট. শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: হ্যাঁ. শুধু লুপ বা একটি জন্য একটি ব্যবহার লুপ বা যাই হোক না কেন, যখন. তবে মৌলিক ধারণা প্রয়োগ করে যে এই মেমরি বা একটি অ্যারের একটি খণ্ড এবং এই, পুনরুক্তি উভয় একই সময়ে. এবং শুধু অক্ষর তুলনা করুন. এবং যদি আপনি একটি হতে পেয়েছেন একটু সতর্ক থাকুন, কারণ আপনি এক আঙুল চাই না অন্যান্য অতীতে যেতে এক স্ট্রিং কারণ অন্যান্য সময়ের চেয়ে. তাই আপনার জন্য চেক করতে চান, চলুন শেষে এই বিশেষ মান নাল. কিন্তু এটা সত্যিই হয়, শেষ, যে হিসাবে হিসাবে সহজ. এবং সত্যি, আমরা প্রয়োজন হবে না যে চাকা reinvent. এখানে দুটি সংস্করণ হয়. এবং কি আমি এখানে বলতে যাচ্ছি যে পরিবর্তে এর তুলনা, = টন সমান স্ট্রিং যদি আমি পরিবর্তে, বলতে যাচ্ছি এর কমা টন তুলনা = 0 সমান. এখন, স্ট্রিং তুলনা করা হয়? এটি একটি ফাংশন, দেখা যাচ্ছে যে জীবনে যার উদ্দেশ্য সি, সঙ্গে আসে দুই স্ট্রিং তুলনা করা হয়. আমরা পড়তে এবং, যদি তুলনা আলোড়ন তার মানুষ পাতা বা ডকুমেন্টেশন বা CS50 রেফারেন্স, এটা করবে না কেবল আপনি যে আলোড়ন বলতে একটি নেতিবাচক হয় আয় তুলনা সংখ্যা বা একটি ধনাত্মক সংখ্যা বা শূন্য, শূন্য মানে যেখানে তারা সমান. তাই শুধু অনুমান. এটা কি করে অর্থ হতে পারে তুলনা আয় আলোড়ন নেতিবাচক মান বা ইতিবাচক মান? শ্রোতা: চেয়ে বেশী বা কম. ডেভিড জে MALAN: হ্যাঁ, এর চেয়ে বড় বা কম. তাই আপনি যদি একটি পুরো বাছাই করতে চেয়েছিলেন একটি dictionary-- স্ট্রিং এর গুচ্ছ আমরা শেষ পর্যন্ত road-- নিচে হবে হিসাবে নিখুঁত ফাংশন সম্ভাব্য ব্যবহার করার জন্য, এটা যে কি করতে যাচ্ছে কারণ আপনার জন্য স্ট্রিং তুলনা, এবং বলতে আপনি একটি বো আগে আসে না, বা না বো একটি বর্ণানুক্রমে আগে আসা. আমরা ঠিক তা করতে পারে. এবং আমি অন্য এক কি লক্ষ্য এই উদাহরণে জিনিস. আর কি বেশী পরিবর্তিত হয়েছে এই প্রধান ফাংশন আপ? চর *. এবং এই যে অন্যান্য সাদা মিথ্যা. এই সময়, যখন আপনি করেছি স্ট্রিং লেখা হয়েছে, আমরা গোপনে rewriting হয়েছে গৃহস্থালির কাজ হিসাবে স্ট্রিং * তাই আসলে যে ঝনঝন শব্দ আপনি বুঝতে পারে. অন্য কথায়, CS50.h, মধ্যে এবং অবশেষে আমরা দেখতে পাবেন, আমরা একটি প্রতিশব্দ বলা স্ট্রিং তৈরি যে গৃহস্থালি * হিসাবে একই জিনিস. এবং এখন জন্য, শুধুমাত্র জানি যে * এই প্রেক্ষাপটে, অন্তত, ঠিকানা মানে. কি এর ঠিকানা? ওয়েল, আসলে আমি বলেন, গৃহস্থালি *, এবং, * int অথবা * ভাসা না গৃহস্থালি * এর মানে হল যে একটি গৃহস্থালি এর ঠিকানা. সুতরাং এখানে এই সামান্য বক্স, ওরফে স্ট্রিং, সত্যিই টাইপ গৃহস্থালি * হয়, যা বলার অপেক্ষা রাখে না কেবল একটি অভিনব উপায়, এই বাক্সে একটি ঠিকানা যেতে হবে. এবং কি যে ঠিকানায় পড়ুন? দৃশ্যত, একটি গৃহস্থালি. কিন্তু একেবারে আমরা int-* এবং অন্যান্য জিনিস আছে. কিন্তু এখন জন্য, গৃহস্থালি * সত্যিই সবচেয়ে সহজবোধ্য এবং সুদ এক. তাই এই সমস্যা যাচ্ছে আবার যদিও, ওঠা. আমি এই প্রোগ্রাম খুলুন ধরুন. এখন আমরা অনুমান করতে পারেন যদি এর দেখতে দিন কি এই কোড দিয়ে ভুল. এই প্রোগ্রাম তাই, কপি 0, আমি এগিয়ে যান এবং আবার কল যাচ্ছে GetString এবং এর মান সঞ্চয়. এবং তারপর, কেন আমি এই কাজ করছি মাত্র সপ্তাহ অতীত থেকে একটি অনুস্মারক হিসেবে? আমরা যে GetString, বলে কি কখনও কখনও নাল প্রদান করে. এটা কি যদি মানে GetString, নাল ফেরৎ? কিছু ভুল হয়েছে. এটা সম্ভবত স্ট্রিং খুব মানে বড়, মেমরি কম্পিউটার এর আউট. এটা সুপার, সুপার, সুপার ঘটবে খুব কমই, কিন্তু এটা ঘটতে পারে. আমরা এটা জন্য চেক করতে চান, এবং যে আমরা করছি সব. যদি আপনি না আমরা এখন দেখতে পাবেন, কারণ জিনিসের জন্য অভ্যাসগত ভাবেই চেক শুরু নাল মত, আপনি হতে পারে আসলে যেতে শুরু মেমরি অ্যাড্রেস অবৈধ যে হয়. এবং যদি আপনি inducing শুরু করতে যাচ্ছেন আরো এবং আরো সেগমেন্টেশন ফল্ট. অথবা একটি Mac বা একটা পিসি, ঠিক একটি কম্পিউটার, যার ফলে স্তব্ধ বা একটি প্রোগ্রাম সম্ভাব্য হিমায়িত করা. তাই এখন, আমি কপি 0.c দাবি আমি যে উপায় দ্বারা এই স্ট্রিং কপি করতে যাচ্ছি 28 রেখায়. এবং তারপর, আমি যাচ্ছি নীচে দাবি এখানে আমি যাচ্ছি যে তাদের মধ্যে একজন পরিবর্তন. তাই এই বিজ্ঞপ্তি. আমি আমাদের পুরানো বন্ধু strlen আহ্বান করছি. এবং শুধু ইংরেজি ব্যাখ্যা এই লাইন 34 কি করছে? কি টি বন্ধনী 0 না বাম প্রতিনিধিত্ব. হ্যাঁ. শ্রোতা: T প্রথম অক্ষর? ডেভিড জে MALAN: T প্রথম অক্ষর. এটা এটি. টন প্রথম অক্ষর, আমি চাই য়ের বড়হাতের অক্ষর ছোটহাতের সংস্করণ দায়িত্ব অর্পণ করা টি প্রথম অক্ষর. তাই এই ভিত্তি হয় প্রথম চিঠি. এবং তারপর, শেষ জিনিস আমি কি এই প্রোগ্রাম আমি এখানে দাবি মূল,, এবং এখানে কপি, T এর. কিন্তু গল্পের উপর ভিত্তি করে আমরা ঠিক , স্ট্রিং সত্যিই কি সম্পর্কে বলা সত্যিই লাইন 28 কি করছেন, এবং কি যাচ্ছে ফলে বাগ পর্দায় হতে হবে? তাই প্রথম প্রথম প্রশ্ন, 28. স্ট্রিং T = সত্যিই কি করছে? আমরা বাম হাতের উপর আছে এখানে দিকে স্ট্রিং টন = গুলি; আমার এক বাক্স দেয় এখানে এক বাক্স এখানে. এবং, এই ঠিকানা 0x অনুমান এর ইচ্ছামত, এই সময়, বলে 50 দিন. কি স্ট্রিং টন = গুলি করে ফণা নীচে কি? শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: এটি মেমরি সঞ্চয় সেখানে ঠিকানা, তাই 0x50 সেখানে যায়. এখন যদি তাই হয়, আমি প্রথম যান টি অক্ষর এবং এটি য়ের বড়হাতের অক্ষর ছোটহাতের, আমি কার্যকরভাবে এর কি করছেন? আমি সত্যিই একই জিনিস করছি? কারণ যদি ঠিকানা 0x50-- এবং মাত্র, আমি এখানে বোর্ডে অনেক রুম আছে না, কিন্তু, এই এখানে নিচে 0x50 অনুমান আমার কম্পিউটার এর মেমরি কোথাও. এবং আমি, উদাহরণস্বরূপ, গেব আছে ভালো, এখানে ছোট হাতের মধ্যে. এবং আমি বলেন, টি বন্ধনী 0 মূলধনী হয়. ওয়েল, টি বন্ধনী 0 টি প্রথম চিঠি. তাই সামান্য গ্রাম যাচ্ছে হয়ে বড় জি কিন্তু সমস্যা , কি আছে বিন্দু না হয়? শ্রোতা: একই. ডেভিড জে MALAN: একই সঠিক জিনিস. তাই সম্ভবত একটি সহজ ব্যাখ্যা, বাক্য গঠন একটু অদ্ভুত, এমনকি যদি. তাই এর এই না দেওয়া. ./copy 0 তারপর কপি 0 করুন এবং. কিছু বলুন, গেব. এবং দুর্ভাগ্যবশত, উভয় তাদের এখন মূলধনী করা হয়েছে, কিন্তু যে জন্য অন্তর্নিহিত আমরা শুধু যে কারণ এখন ঠিকানার সঙ্গে তার আচরণ. তাই কিভাবে আমরা করা শুরু করবেন না address-- কোন শ্লেষ intended-- আমরা মোকাবেলার শুরু করবেন কিভাবে এই বিশেষ সমস্যা? ওয়েল, copy1.c, জিনিষ যাচ্ছে একটু বেশি জটিল পেতে. কিন্তু আমি একটি দাবি ধারণার দিক থেকে সহজ সমাধান. এক নজরে এ পেতে কঠিন. প্রথম জন্য সহজ হবে না সময় আপনি, সম্ভবত, এটি টাইপ কিন্তু সমস্যা হল যে যদি কেবল T = ঠিক করছেন কপি ঠিকানা, কি, আবার আমি আপনার উপর বাছাই করতে পারেন যদি, সমাধান হতে যাচ্ছে আসলে একটি স্ট্রিং অনুলিপি জন্য? শ্রোতা: আমরা সম্ভবত হবে আবার একটি লুপ ব্যবহার করুন. ডেভিড জে MALAN: হ্যাঁ. তাই আমরা আবার একটি লুপ প্রয়োজন চলুন. এবং আমরা কপি করতে চান, কারণ যদি অন্য স্ট্রিং মধ্যে একটি স্ট্রিং গুলি, আমরা সম্ভবত এটি করতে চান অক্ষর দ্বারা অক্ষর. কিন্তু সমস্যা যদি হয়, এই, মূলত গুলি এখন আমরা স্পষ্টভাবে শুরু করতে হবে টন জন্য মেমরি বণ্টন. অন্য কথায়, এর যাক এই এক শেষ সময় পুনরায় আঁকুন. এই স্ট্রিং গুলি = GetString হয়. এবং এর পাশাপাশি, এই পর্যন্ত এখানে করা যাক. এই GetString হয়. কিছু এবং তারপর, ছবি যে মত আগে হতে যাচ্ছে, গ্রাম একটি বি ই / 0. যে এই মত সামান্য কিছু দেখায়. এবং এর অতএব, আমরা এই 0x50 কল এবং যে 51, 52 হতে যাচ্ছে. তাই এই 0x50 হয়. এবং তারপর, আমি পংক্তি টন না. মেমরি, যে শুধু যাচ্ছে আমার ভালো একটি সামান্য বর্গ দিতে. তাই কি পদক্ষেপ এখন কি? আমি টন মধ্যে গুলি কপি করতে চান তাহলে, কি ফাঁকা এখানে পূরণ করতে হবে? অথবা আমরা কি প্রয়োজন একটি উচ্চ পর্যায়ের কি? হ্যাঁ? কেউ? হ্যাঁ. শ্রোতা: আমরা [শ্রবণাতীত] প্রয়োজন. ডেভিড জে MALAN: হ্যাঁ, আমরা এই ফাঁকা পূরণ করতে হবে. আমি তারপর কপি এবং করতে পারে না গেব নাম পুঁজিতে আমি অপারেটিং সিস্টেম জিজ্ঞাসা পর্যন্ত মেমরি অন্য চাঙ্গড় জন্য যে মূল হিসাবে অন্তত হিসাবে বড়. সুতরাং যে একটি প্রশ্ন, আমাদের ছেড়ে. আমি অপারেটিং সিস্টেম না জিজ্ঞাসা করবেন শুধুমাত্র একটি সহজ সামান্য পয়েন্টার জন্য এই হিসাবে বলা হয়, একটি ঠিকানা, একটি পয়েন্টার না একটি সহজ সামান্য বক্স এই মত একটি স্ট্রিং বলা? আমি কিভাবে অপারেটিং জিজ্ঞাসা করবেন না মেমরি একটি বড় খণ্ড সিস্টেম? সেটা অনেক দূরে, আমি শুধুমাত্র যে ফিরে অর্জিত করেছি পরোক্ষভাবে GetString আহ্বান করে. সুতরাং কিভাবে GetString হয় তার মেমরি পেয়ে এমনকি? ওয়েল, এটা আছে যে দেখা যাচ্ছে এখানে এই অন্যান্য ফাংশন যে আমরা এখন ব্যবহার করা শুরু করব. এখন, এই পথ আরো রহস্যপূর্ণ than-- দেখায় এবং আমি এটি দেখতে পারেন শুধুমাত্র এক যারা am এই লাইন পথ আরো রহস্যপূর্ণ তারপর এটি প্রথম নজরে উচিত. কিন্তু এর এটি সরাইয়া জ্বালাতন করা যাক. বাম দিকে, আমি গৃহস্থালি * টন আছে. ইংরেজি সুতরাং, এর প্রণয়ন শুরু করা যাক প্রযুক্তিগত অপভাষা মধ্যে সঠিক বাক্য. তাই এই বণ্টন করা হয় একটি টাইপ গৃহস্থালির কাজ পরিবর্তনশীল টন বলা *. এখন, যে সত্যিই কি মানে? ওয়েল, এর মানে হল যে, আমি কি যাচ্ছি টন নামক এই পরিবর্তনশীল রাখা? একটি গৃহস্থালি একটি ঠিকানা. সুতরাং যে, শুধু সহজ অধিক যুক্তিসঙ্গত উপায় এর বাম দিকে বর্ণনা. সুতরাং যে এখানে শুধুমাত্র এই বাক্স তৈরি করে. তাই ডান দিকে, সম্ভবতঃ, যাচ্ছে বড় যে বরাদ্দ মেমরি কিভাবে খণ্ড? তাই এর এই সরাইয়া জ্বালাতন করা যাক. এটা প্রথম নজরে অপ্রতিরোধ্য এর কিন্তু ভিতরে এখানে কি হচ্ছে? প্রথমত, যদি malloc আছে, যা আমাদের নতুন বন্ধু, দৃশ্যত "মেমরি বরাদ্দ করা." তাই এই হচ্ছে পাশ যুক্তি তা, তাই এটি একটি চমত্কার বড় যুক্তি. তাই এর এই সরাইয়া জ্বালাতন করা যাক. s এর strlen, অবশ্যই, প্রতিনিধিত্ব করে the-- শ্রোতা: অক্ষরের সংখ্যা. ডেভিড জে MALAN: শুধু এর মধ্যে অক্ষর সংখ্যা. সুতরাং এর দৈর্ঘ্য, মূল পংক্তি. তাই জি একটি-B-ই. সুতরাং এটি সম্ভবত চার এই ক্ষেত্রে আছে. কেন আমি পরে ফোন: +1 করছেন s এর strlen আহ্বান? শ্রোতা: [শ্রবণাতীত] ডেভিড জে MALAN: যে জন্য বিশেষ নাল অক্ষর. আপনি যদি সম্পর্কে জিজ্ঞাসা দৈর্ঘ্য কি গেব এর নাম, আমি চার বলে যাচ্ছি. ফণা নীচে, যদিও, আমি প্রয়োজন নাল অক্ষর জন্য যে পঞ্চম বাইট. আমি ফোন: +1 করছি সুতরাং যে কেন. এখন ঠিক ক্ষেত্রে আপনি এই চলমান আর অন্য একটি কম্পিউটার প্রোগ্রাম, বলে, CS50 অ্যাপ্লায়েন্স, যেখানে একটি গৃহস্থালি আকার বিভিন্ন হতে পারে আমার নিজের কম্পিউটারে থেকে আমি এই কল করতে পারেন যে সক্রিয় আউট অপারেটর যাও sizeof, শুধু কম্পিউটার জিজ্ঞাসা একটি আকার কি এই কম্পিউটারে গৃহস্থালি? এবং এই পাঁচটি গুন দ্বারা একটি গৃহস্থালি আকার, যেমন যা অধিকাংশ কম্পিউটারে করবে মাত্র এক, যদি malloc করা আমার এই বড় জন্য বরাদ্দ করা হবে এখানে ডান উপর মেমরি খণ্ড. এবং এটা রিটার্ন যাচ্ছে এটা তাই এটি একটি ফাংশন হয় কি আমাকে ফিরে যাচ্ছে? শ্রোতা: ঠিকানা? ডেভিড জে MALAN: কি ঠিকানা? শ্রোতা: মেমরি এটি বরাদ্দ? ডেভিড জে MALAN: এর মেমরি এটি বরাদ্দ. তাই আমি সত্যি, কোন ধারণা আছে যেখানে এই পর্যন্ত শেষ হয়ে যাচ্ছে. আমি উত্থাপন করা যাচ্ছে না এটা 0x88 এ শেষ করতে যাচ্ছে. সম্পূর্ণ অবাধ, কিন্তু 0x50 ছাড়া অন্য কোথাও, অপারেটিং সিস্টেম, কারণ কি উইন্ডোজ এবং ম্যাক অপারেটিং সিস্টেম আমার জন্য না, হয় এটি প্রদান এর নিশ্চিত করুন যে আমার র্যাম বিভিন্ন অংশ. তাই এই মান এই হল যেখানে মেমরি খণ্ড শেষ হতে পারে. তাই এই 0x88, এখানে শেষ পর্যন্ত কি হয়. তাই এখন স্পষ্ট, আমি বুঝতে পারেন এই হিসাবে একই হয় না যে, তারা নির্দেশ করছেন, কারণ মেমরি বিভিন্ন অংশ. আমি এখন আসলে এই কপি করতে চান, তাই যদি এর মধ্যে, আপনার প্রস্তাবিত সমাধান করতে দেওয়া. , এর ঠিক, যান জন্য একটি লুপ তৈরি করা যাক এবং টি বন্ধনী না আমি বন্ধনী আমি পায়. এখন আমি ব্যবহার করতে পারেন এই অ্যারের মত স্বরলিপি, কারণ, যদিও malloc হয় খুব জেনেরিক আমাকে মেমরি বরাদ্দ, মেমরি শুধুমাত্র সংলগ্ন বাইট. বাইট, বাইট, বাইট, ফিরে ফিরে ফিরে যাও. আমি একজন প্রোগ্রামার হিসাবে নিশ্চয় করতে পারেন একটি অ্যারের, হিসাবে এটি আচরণ যা আমি এই অবশেষে পরিচিত ব্যবহার করতে পারেন কিছু কিছু বর্গাকার বন্ধনী স্বরলিপি. তাই আমাকে, কারণ সেখানে বিরতি দিন এই এমনকি, সব একযোগে অনেক মৌলিক ধারণা সংক্ষিপ্তবৃত্তি যদিও যে পংক্তি, এই সব সময়, একটি নতুন তথ্য টাইপ কোনটাই হয় না. এটা শুধু একটি তথাকথিত পয়েন্টার একটি অক্ষর একটি ঠিকানা, যা শুধু অর্থ এটি একটি সংখ্যা যে মানুষের কনভেনশন দ্বারা আমরা 0x কিছু লিখতে ঝোঁক. কিন্তু এটা শুধু একটি সংখ্যা 33 অক্সফোর্ড রাস্তার মত, যা হতে হবে সি এস বিল্ডিং এর ঠিকানা. এই বিবরণ উপর কোন প্রশ্ন? হ্যাঁ? শ্রোতা: কেন আমরা চেক করতে সমান টি নাল? ডেভিড জে MALAN: কেন আমরা কি নাল সমান টি পরীক্ষা? আমরা documentation-- পড়া malloc জন্য মহান question--, এটি সূক্ষ্ম মুদ্রণ বলে যাচ্ছে কখনও কখনও malloc হয়, নাল ফিরে হতে পারে শুধু GetString মত. এবং প্রকৃতপক্ষে, GetString, নাল ফেরৎ ঘুরে, malloc NULL উত্পন্ন করে, GetString, malloc ব্যবহার কারণ. অপারেটিং সিস্টেম এবং যদি যে ঘটতে পারে ম্যাক অপারেটিং সিস্টেম, উইন্ডোজ, যাই হোক না কেন, কেবল আপনার জন্য মেমরি আউট. সুতরাং যে কি ঘটেছে. এবং আমার এক অন্য জিনিস প্রকাশ করা যে শুধু আপনার মন গাট্টা পারে বা সম্পূর্ণরূপে খুব বেশী দূরে লাইন হতে হবে. কিন্তু আমার থামা কপি জন্য লুপ জন্য একই, যা একটি মুহূর্ত আগে, রিকল ছিল এই. টি বন্ধনী আমি বন্ধনী আমি পায়. সুন্দর এবং ব্যবহারকারী বান্ধব. আবার সপ্তাহ দুই মত অনুভূত. কিন্তু এই সংস্করণ আসলে হতে পারে রহস্যপূর্ণ যা এই, হিসাবে পুনর্লিখিত. এটি একটি কৌশল বলা পয়েন্টার গাণিতিক, ঠিকানা পাটিগণিত. কিন্তু কেন এই কাজ করে? এখন মরণ, সি লেখক ব্যবহার করার সিদ্ধান্ত নিয়েছে বিভিন্ন কাজের জন্য * প্রতীক. আমরা এটা ইতিমধ্যে একবার ব্যবহার দেখা করেছি যার মানে গৃহস্থালি *, "আমাকে একটি পরিবর্তনশীল দিতে যে থাকে যাচ্ছে একটি গৃহস্থালি এর ঠিকানা. " যে প্রেক্ষাপটে তাই গৃহস্থালি * "সম্পর্কে একটি পরিবর্তনশীল দিতে." মানে দুর্ভাগ্যবশত, আপনি * ছাড়া ব্যবহার করা হলে এটি সামনে একটি শব্দ, গৃহস্থালি মত, এটা এখন বলা হচ্ছে dereference অপারেটর. এবং আমরা দীর্ঘ আগে এই আরো দেখতে পাবেন. কিন্তু এটা শুধু "সেখানে যান." অর্থ কেউ আমাকে হস্তান্তর যদি এটা বলছে, মত কাগজ এক টুকরা উপর "33 অক্সফোর্ড স্ট্রিট," আমি "* 33 অক্সফোর্ড স্ট্রিট," না মানে হল যে যদি "সি এস বিল্ডিং রাস্তা নিচে যান." সুতরাং * ঠিক আছে যদি যেতে মানে এটি সামনে কোন শব্দ আছে. তাই পরিষ্কার করা, টি কি? টি খণ্ড ঠিকানা আমার ফিরে দেওয়া হয় যে মেমরি. এর, পরিষ্কার করা, কি এর ঠিকানা যেমন আমরা আলোচনা করছি, ছোট হাতের অক্ষর ব্যবহার গেব এর? এর ঠিকানা র শ্রোতা: স্ট্রিং. ডেভিড জে MALAN: গেব এর মূল নাম. সুতরাং এটি এর ঠিকানা এর মেমরি এই অঞ্চলে. তাই আমি যদি বলি টি + তোমার আমি, নোটিশ, শুধু আমাদের পুরানো বন্ধু. এটি শুধু একটি সূচক পরিবর্তনশীল যে শূন্য থেকে iterating এর স্ট্রিং এর দৈর্ঘ্য. সুতরাং, তারপর শূন্য, এক হতে যাচ্ছে তারপর দুই, তারপর তিন, তারপর চার. তাই এর এই নতুন জড় দিন ভূত মত পাজল টুকরা, যদি আপনি হবে, যদিও, আবার, বাক্য গঠন ভূত চেয়ে অনেক বেশি রহস্যময় হয়. তাই টন একটি ঠিকানা + হয় আমার দিতে হবে একটি সংখ্যা, কারণ এই সব আমরা হেক্স হিসাবে অঙ্কন করা হয়েছে যে সংখ্যা. কিন্তু তারা শুধু সংখ্যা না. টন ঠিকানা আমরা বলেছেন, তাই যদি ছিল 0x88, 0x88 প্লাস শূন্য কি. আপনি আরামদায়ক না হন, এমনকি যদি এখনো হেক্স সঙ্গে একটি অনুমান নিতে. শ্রোতা: মূল. ডেভিড জে MALAN: 0x88 এখনও. সুতরাং * কি 0x88 না? এটা যার মানে "সেখানে যান", মানে কার্যকরভাবে, "এখানে আপনার আঙুল রাখা." এবং এখন ডান দিকে এই অভিব্যক্তি, * এবং তারপর পাঠ্যক্রম মধ্যে, আমি যা, এর মানে + + এখানে সামান্য গ্রাম পর্যন্ত মোকাবেলার. গুলি + 0, অবশ্যই, হয় যাই হোক না কেন গুলি, গুলি. সুতরাং এখন, এটা * গুলি, যা শুধু * 33 মত অক্সফোর্ড রাস্তার ঠিকানা যান মানে এর. সুতরাং এখানে এই আঙুল, ডান হাত. তাই আমি কি কপি যাচ্ছি? যা ডান জিনিস, গেব, এখানে মধ্যে এখানে সামান্য গ্রাম,. যে তাই প্রভাব লুপ প্রথম পুনরাবৃত্তির, আপনি এটা দেখে মনে হচ্ছে, যদিও প্রস্তাব কিছু পাগল আরো জটিল আমরা আগে দেখা করেছি কেবল বলছে না এখানে যান এবং এখানে যে চরিত্র কপি করুন. এটি আপনার উভয় অবস্থানে একটি মানচিত্র প্রদান এর. এবং আমরা এই অনেক বেশি দেখতে পাবেন. কিন্তু এখন জন্য, আশা করা হয় এই মৌলিক ধারণা কিছু পরিচয় করিয়ে দিতে. এবং প্রকৃতপক্ষে, এর যাক এখানে এক চূড়ান্ত প্রোগ্রাম, এবং তারপর প্রতিশ্রুত claymation, সবকিছু যা সব অধিকার করতে হবে. ঠিক আছে. তাই আমাকে সেখানে আমরা যেতে বইয়ের নাম আপ খুলুন. আমরা ফিরে আসবো ভগবন্ তাই দিন দীর্ঘ আগে এই ছবি. আমাকে এখানে এই চূড়ান্ত উদাহরণ খুলুন. তাই এখানে একটি সুপার, সুপার accomplishes যে প্রোগ্রাম নিম্নলিখিত যে জীবনে কিছুই. এটা প্রথম দুটি ভেরিয়েবল, এক্স ঘোষণা এবং এই সময় সংখ্যা হয় না y, ও, কোনটাই. তারা জন্মগতভাবে, ইন্টিজার না. তারা * দৃশ্যত হয় int. তাই শুধু যে কেউ, এটা কি মানে আপনার তথ্য টাইপ করুন, আপনার পরিবর্তনশীল, টাইপ int-* তারা হয়? যে কোন int এর ঠিকানা. তাই আমি এটা এখনো যেখানে কোন ধারণা নেই. এটা ঠিক, "শেষ পর্যন্ত, করা মানে এখানে কোন int এর ঠিকানা. " এটি যেখানেই 0x50, 0x88, মেমরি, একটি ঠিকানা আছে হবে. এবং যে Y কি পাশাপাশি, হতে যাচ্ছে. আমি এখন যদি বলি এক্স = malloc (sizeof (int-)) এই বলছে এর অভিনব উপায়, হেই অপারেটিং সিস্টেম, malloc মাধ্যমে, আকার জন্য আমাকে যথেষ্ট মেমরি দিতে যা সম্ভবত কোন int, এর 32 বিট বা চার বাইট হতে যাচ্ছে. সুতরাং malloc কি ফিরে না? Malloc একটি ঠিকানা প্রদান করে. তাই x এর মধ্যে সংরক্ষিত পেতে যাচ্ছে? এর খণ্ড ঠিকানা মেমরি, চার বাইট, যে malloc শুধু জিজ্ঞাসা করে আমার জন্য পাওয়া যায় অপারেটিং সিস্টেম. এখন এদিকে, লাইন এখানে চার, * এক্স = 42. শুধু, পরিষ্কার করা নিচে আছে কি যাচ্ছে? বাম দিকে, * এক্স. যে 33 অক্সফোর্ড রাস্তার মত. সুতরাং * এক্স মানে কি? শ্রোতা: যান. ডেভিড জে MALAN: যে ঠিকানায় যান. যেখানেই যে তাল মেমরি এটি যেতে হয়. এবং অবশ্যই, কি সেখানে রাখা? শ্রোতা: 42. ডেভিড জে MALAN: 42. সমস্ত অধিকার, * y, ও একই ধারণা. Y মধ্যে ঠিকানা যান. সেখানে 13 নম্বর রাখুন, কিন্তু এই মুহূর্তে Y কি? শ্রোতা: কোন মেমরি y জন্য আছে. ডেভিড জে MALAN: আছে y জন্য কোন স্মৃতি. তাই সম্ভবত Y আছে আমরা করছি বলছে হিসাবে, থাকে? শ্রোতা: বর্জ্য. ডেভিড জে MALAN: কিছু আবর্জনা মান. এখন, আবর্জনা মান এখনও একটি সংখ্যা. এটা এখনও একটি ঠিকানা জন্য ভুল হতে পারে. এটা কেউ হিসাবে যদিও নিচে কিছু লেখা এবং আমি অর্থ এটা ভুল রাস্তার নিচে কিছু ভবন. এবং আপনি শুধু যেতে চেষ্টা আপনি মালিক না কিছু ভবন, অথবা মেমরির কিছু খণ্ড আপনি না আছে দেওয়া হয়েছে, খারাপ জিনিস ঘটতে পারে. কম্পিউটার অন্য কিছু বিপর্যস্ত, অথবা হতে পারে অনির্ধারিত আচরণ ঘটতে পারে. সুতরাং, তারপর, Binky অনলাইন এই ইন্ট্রো হয়. আমি এখনও 20 মনে রাখবেন, কিছু অদ্ভুত বছর পরে, আমি যখন পরিশেষে আমি যেখানে ছিল পয়েন্টার বোঝা. আপনি যদি বলে, যা তিন মিনিটের মধ্যে এখানে চলে এবং আমি কি মনে করেন না পয়েন্টার বুঝতে বুঝতে আমি 20 জন্য মনে আছে কিছু ছবি কারণে বছর কখন এবং কেন এটা অবশেষে নিমগ্ন , আমার শিক্ষার সঙ্গে বসা সহকর্মী, নিশাত মেহতা মধ্যে ইলিয়ট ডাইনিং হলের পিছনে. এখন, আমি মনে করেছি এই ছিল, কারণ বিষয় আমি, মধ্যে এক বিশেষ করে, সঙ্গে লড়াই. এবং তারপর, এটা অবশেষে ক্লিক, আমি বিষয় অনেক বলতে সাহস অবশেষে করবে না. এবং এখন, যে সব বোধ করা সুখী এবং আরো সব বিশ্বাসী, এর মধ্যে একটি চূড়ান্ত কটাক্ষপাত করা যাক আমাদের এখানে Binky অনলাইন এ গত তিন মিনিট, আমাদের বন্ধু, নিক থেকে স্ট্যানফোর্ড থেকে Parlante. [ভিডিও প্লেব্যাক] -আরে, Binky অনলাইন. ওয়েক আপ! এটা মজা করার জন্য পয়েন্টার সময়. যে -কি আছে? পয়েন্টার সম্পর্কে জানুন? ওহ, বুড়ি! -ওয়েল, শুরু, আমি আমরা অনুমান একটি দম্পতি পয়েন্টার প্রয়োজন হবে. -ওকে. এই কোড, দুই পয়েন্টার বরাদ্দ যা পূর্ণসংখ্যার নির্দেশ করতে পারেন. -ওকে. ওয়েল, আমি দুই পয়েন্টার দেখতে, কিন্তু তারা কিছু ইশারা করা হবে বলে মনে হচ্ছে না. সরল অধিকার. প্রাথমিকভাবে, পয়েন্টার কিছু নির্দেশ করে না. তারা বলা হয় নির্দেশ জিনিস pointees, এবং এর তাদের জন্য সেট আপ একটি পৃথক ধাপ. ডান, ডান, -ওহ. আমি জানতাম যে. pointees আলাদা আলাদা. Er, যাতে আপনি কিভাবে একটি pointee বরাদ্দ না? -ওকে. ওয়েল, এই কোড বরাদ্দ একটি নতুন ইন্টিজার pointee, এবং এই অংশ সেট x তা নির্দেশ করার জন্য. -আরে, যে দেখতেও ভাল. সুতরাং এটা কিছু না. -ওকে. আমি পয়েন্টার এক্স ডি-রেফারেন্স পাবেন তার pointee মধ্যে 42 নম্বর সঞ্চয়. এই কৌতুক, আমি প্রয়োজন হবে আমার Dereferencing যাদু জাদুদণ্ড. Dereferencing এর তোমার যাদু জাদুদণ্ড? কিন্তু যে দারুণ. -এই কোড মত দেখাচ্ছে. আমি শুধু সংখ্যা, এবং [পপ] সেট আপ করব -আরে, চেহারা. এটি এখন পর্যন্ত যায়. এক্স অনুসরণ করে এর একটি dereference করছেন -তাই তীর তার pointee অ্যাক্সেস. এই ক্ষেত্রে, সেখানে একটি দোকান 42. আরে সংখ্যা সংরক্ষণ করার জন্য এটি ব্যবহার করুন অন্যান্য পয়েন্টার মাধ্যমে 13 Y. -ওকে. আমি শুধু এখানে উপর যাবেন, এবং 13 নম্বর সেট আপ পেতে. এবং তারপর, জাদুদণ্ড নিতে Dereferencing এবং মাত্র [গুঁজন] -ওহ! আরে, -ওহ! যে কাজ করে নি. Binky অনলাইন, আমি dereferencing মনে করি না, বলুন আপনি কি জানেন, কারণ y, ও, একটি ভাল ধারণা সেট আপ pointee একটি পৃথক ধাপ. আমি এবং আমরা কখনও তা মনে করি না. -গুড বিন্দু. -Yeah. আমরা পয়েন্টার y বরাদ্দ, কিন্তু আমরা না একটি pointee নির্দেশ সেট. অত্যন্ত মনোযোগী. -আরে, আপনি সেখানে Binky অনলাইন ভাল খুঁজছেন. আপনি যাতে এটা ঠিক করতে পারবো y পয়েন্ট x হিসাবে একই pointee? অবিমৃষ্য. আমি আমার যাদু জাদুদণ্ড ব্যবহার করব পয়েন্টার নিয়োগ. হতে যাচ্ছে যে -কি আগে ভালো একটি সমস্যা? কোন. এই নির্দেশ pointees স্পর্শ করে না. এটা ঠিক এক পয়েন্টার পরিবর্তন অন্য হিসাবে একই জিনিস নির্দেশ. -ওহ, আমি দেখতে. X হিসাবে একই জায়গায় y পয়েন্ট. তাই অপেক্ষা করুন. এখন, Y সংশোধন করা হয়েছে. এটি একটি pointee আছে. সুতরাং আপনি এর জাদুদণ্ড চেষ্টা করতে পারেন 13 পাঠাতে আবার Dereferencing. ঠিক আছে, -Uh. এটা এখানে যায়. [পপ] -আরে যে, চেহারা. এখন Y কাজ dereferencing. এবং পয়েন্টার ভাগ করা হয় এক pointee যে, তারা উভয় 13 দেখুন. -Yeah. ভাগ, যাই হোক না কেন. সুতরাং আমরা এখন জায়গা সুইচ যাচ্ছে? ওহ, চেহারা. আমরা সময় ফুরিয়েছে. -But-- তিন পয়েন্টার নিয়ম মনে রাখবেন -শুধু. এক নম্বর, মৌলিক গঠন আপনি একটি পয়েন্টার আছে, এবং এটি একটি pointee স্থানটিকে উপর. কিন্তু পয়েন্টার এবং pointee, পৃথক এবং সাধারণ ত্রুটি একটি পয়েন্টার সেট আপ করতে হয়, কিন্তু এটি একটি pointee দিতে ভুলবেন না যাও. দুই নম্বর, পয়েন্টার dereferencing পয়েন্টার আরম্ভ এবং উপর তীর অনুসরণ তার pointee অ্যাক্সেস. আমরা সব জানি, এই সেখানে যদি শুধুমাত্র কাজ করে একটি pointee, যা ধরনের এক নম্বর নিয়ম ফিরে পায়. তিন নম্বর, পয়েন্টার নিয়োগ এক পয়েন্টার নেয় এবং নির্দেশ এটি পরিবর্তন অন্য পয়েন্টার হিসাবে একই pointee. নিয়োগ পরে তাই, দুই পয়েন্টার একই pointee নির্দেশ করবে. কখনও কখনও, যে ভাগ বলা হয়. এবং যে সত্যিই, এটা আছে সব. বিদায় এখন. [END টি ভিডিও প্লেব্যাক] ডেভিড জে MALAN: এটা CS50 জন্য এটি. আমরা আগামী সপ্তাহে আপনি দেখতে পাবেন.