DAVID Malan: হ্যালো, এবং এবং CS50 ফিরে স্বাগত জানাই. তাই এই সপ্তাহে চার শেষে. প্রথমে মাত্র এক ঘোষণার. হয় তথাকথিত পঞ্চম সোমবার তাই এই আসছে সোমবার উত্ক্রান্ত. এই থেকে পরিবর্তন করার সুযোগ একটি চিঠি গ্রেড যাও / UNSAT SAT, বা থেকে চিঠি গ্রেড / UNSAT SAT. Annoyingly, যে প্রক্রিয়া প্রয়োজন আছে আপনি পূরণ করতে স্বাক্ষর, কারণ যারা গোলাপী যোগ / ড্রপ ধরনের এক আউট. কারণ টেকনিক্যালি Sat, / UNSAT সংস্করণ এবং চিঠি গ্রেড সংস্করণ স্বতন্ত্র ক্যাটালগ নম্বর নেই. কিন্তু কোন বড় চুক্তি. শুধু আমার আসা পর্যন্ত বা Rob যাও অথবা যে কোনো স্থানে Lauren আপনি. আপনি কি ধরনের না থাকলে বা আমাদেরকে ইমেইল paperwork আপনাকে আজ প্রয়োজন, এবং আমরা আপনি নিতে সাহায্য নিশ্চিত করা হবে সোমবার আগে যে যত্ন. ঠিক আছে, তাই আজ - আসলে, একটি প্রতিধ্বনি একটি বিট আছে. আমরা স্বন সম্পর্কে নিচে একটি বিট করতে পারেন? ঠিক আছে. আজ সুতরাং, আমরা একটি বিষয় চালু পয়েন্টার হিসাবে পরিচিত. এবং আমি এই এক মানা করব আমরা ঝোঁক যে আরও জটিল বিষয় এই ক্লাসে আবরণ, অথবা সত্যিই কোন সি ব্যবহার করে পরিচায়ক কোর্স কিন্তু বিশেষ করে, এটা আমার জন্য শব্দ গ্রহণ আপনার মন একটি বিট আরো নমিত মতানুযায়ী যদি আজ এবং সপ্তাহের মধ্যে আসা. এটি আপনাকে পেয়ে প্রতিনিধি না এই সময়ে কোন খারাপ এটা ঠিক এর মানে হল যে এটি একটি বিশেষ করে অত্যাধুনিক বিষয় এর আমি প্রতিজ্ঞা করছি যে, কয়েক সপ্তাহ অতএব, সব খুব অদ্ভূত মনে হবে অতীতের দিকে দৃষ্টিপাত সহজবোধ্য. আমি এখনও এই দিন মনে রাখবেন. আমি, ইলিয়ট ডাইনিং হল বসা ছিল আমার TF Nishat মেহতার পরবর্তী বসা, ইলিয়ট বাড়ির একটি আবাসিক যারা ছিল. এবং কিছু কিছু কারণে, এই বিষয় মাত্র ক্লিক করে. যা আমি খুব লড়াই যে বলতে হয় কিছু সময় পরিমাণ জন্য এটি, কিন্তু আমি সঙ্গে এই ধরনের যে কোনও এড়াতে সাহায্য আমার যথাসাধ্য চেষ্টা করতে হবে একটি বিষয়ের সঙ্গে যে শেষ পর্যন্ত সংগ্রাম বেশ শক্তিশালী. বস্তুত, বিষয় এক আমরা আলোচনা করব আসা সপ্তাহের মধ্যে যে নিরাপত্তা, এবং কিভাবে আপনি আসলে করতে পারেন উপায়ে মেশিন গ্রহণকারী যে উদ্দেশ্যে করা হয়নি. এবং যারা শোষণ সাধারণত হয় বাগ, ভুল ফলে যে আমরা মানুষ কিছু বুঝতে না করতে অন্তর্নিহিত বাস্তবায়ন বিবরণ যা মাধ্যমে প্রোগ্রাম তৈরি করা হয়. এখন এই জন্য সব আরো ব্যবহারকারীর মনে বন্ধুত্বপূর্ণ, আমি একটি 10 ​​খেলতে চাই একটু claymation দ্বিতীয় পূর্বরূপ আনা যারা Binky নামে চিত্র স্ট্যানফোর্ড এ আমাদের এক বন্ধু দ্বারা জীবন, অধ্যাপক নিক Parlante. তাই আমাকে যদি আপনি এই দিতে অনুমতি এখানে Binky এর টিজার. [ভিডিও প্লেব্যাক] -আরে, Binky. নিদ্রা হইতে জাগা আপ. এটা মজা করার জন্য পয়েন্টার সময়. কি যে? পয়েন্টার সম্পর্কে জানুন? ওহ, goodie. [END টি ভিডিও প্লেব্যাক] DAVID Malan: স্ট্যানফোর্ড যে কম্পিউটার বিজ্ঞান. তাই আরো যে আসতে. [সাধুবাদ] DAVID Malan: দুঃখিত, নিক. সুতরাং আমরা শেষ শেষ প্রত্যাহার এই সত্যিই উত্তেজনাপূর্ণ cliffhanger যদ্দ্বারা এই ফাংশন ঠিক কাজ করা হয়নি. অন্তত intuitively, এটি অনুভূত এটি কাজ করা উচিত ভালো লেগেছে. শুধু মান সোয়াপিং দুটি পূর্ণসংখ্যার. কিন্তু প্রত্যাহার যে আমরা প্রিন্ট আউট যখন প্রধান, এক এবং মূল মান দুই, তারা এখনও এক ছিল এবং দুই নয়, দুই ও এক. তাই আমাকে আসলে সুইচ দেওয়া ওভার প্রয়োগ করতে. এবং আমি কঙ্কাল কোড একটি বিট আপ লিখেছে আমি দাবি, যেখানে এখানে আগাম যে এক্স 1 হতে হবে, Y 2 হবে. আমি তখন তাদের উভয় প্রিন্ট আউট মুদ্রণ চ সঙ্গে মানের. তারপর আমি এখানে নিচে দাবী করে যে আমরা তাদের অদলবদল চলুন. আমি আমাদের জন্য এখানে একটি ফাঁকা স্পট বাকি শুধু একটা মুহূর্ত আজ পূরণ করুন. তারপর, আমি দাবি করতে যাচ্ছি যে দুটি ভেরিয়েবল অদলবদল করা হয়েছে. তারপর আমি প্রিন্ট চলেছি আবার তাদের খুঁজে. তাই আশা করছি, আমি 2 1 দেখতে পাবেন. 2, 1. সুপার সহজ যে অধিকার এখন লক্ষ্য. সুতরাং আমরা সোয়াপিং সম্পর্কে কিভাবে যান দুটি ভেরিয়েবল? আমি এখানে উত্থাপন করা ভাল যদি এই কাপ একটি কম্পিউটার মেমরি উপস্থাপন করা হতে পারে. এই কয়েক কামড় হয় অন্য কয়েক কামড় হয়. আমরা একটি স্বেচ্ছাসেবক এবং আপ আসতে দিবেন পরিচিত, আমাদের কিছু পানীয় মিশ্রিত করা? উপর আসা. আপনার নাম কি? Jess: জেস. DAVID Malan: জেস? , আপ নেভিগেশন জেস আসা. আপনি কিছু মনে না করেন তাহলে, আমরা করা আছে আপনি গুগল গ্লাস তাই আমরা করতে পারেন এই immortalize. ঠিক আছে, এক গ্লাস. একটি ভিডিও রেকর্ড করুন. এবং ঠিক আছে, আমরা ভাল এখানে জেস সঙ্গে যেতে. ঠিক আছে. দেখা হওয়ায় খুশী হলাম. তাই আমি চাই আপনি কি এখানে করতে - খুব দ্রুত, আপনি হতে পারে - শুধু আমাদের কমলা অর্ধেক গ্লাস একা আসে রস এবং দুধ আধা গ্লাস, কার্যকরভাবে সংখ্যা 1 প্রতিনিধিত্বমূলক অন্যান্য কাপ মধ্যে এক কাপ এবং 2. এই ভাল ফুটেজ হতে যাচ্ছে. Jess: দুঃখিত. DAVID Malan: না, না. এটা ঠিক আছে. খুশী হলাম. ঠিক আছে, তাই আমরা চার বাইট আছে কমলার রস মূল্য. আমরা এটা মান 1 বলা হবে. এখন দুধ মূল্য অন্য চার বাইট. এটি 2 মূল্য কল হবে. যথাক্রমে x এবং y তাই. ঠিক আছে, তাই এখন হাতের টাস্ক - যদি সমস্ত সামনে আপনার জন্য, জেস, আপনার সহপাঠীদের এর - x এবং y এর মান যেমন অদলবদল করতে হয় আমরা কমলার রস চান অন্যান্য কাপ এবং এই এক কাপ দুধ, কিভাবে আপনি হতে পারে - আপনি আসলে আগে - এটি কাজ সম্পর্কে যান? ঠিক আছে, সিদ্ধান্ত জ্ঞানময়. তাই আপনি যদি একটি বিট আরো মেমরি প্রয়োজন. তাই এর একটি অস্থায়ী বরাদ্দ করা যাক কাপ, যদি আপনি হবে. এবং এখন x এবং y অদলবদল এগিয়ে যান. চমৎকার. সুতরাং খুব ভাল কাজ করেছেন. এত জেস আপনাকে ধন্যবাদ. এই যে নিন. একটু স্যুভেনির. ঠিক আছে, তাই সম্ভবত, সুপার সহজ ধারণা. আমরা একটি বিট প্রয়োজন সম্পূর্ণরূপে স্বজ্ঞাত আরো স্টোরেজ স্পেস - এই ফর্ম, এক কাপ - আসলে আমরা করতে চান তাহলে এই দুটি ভেরিয়েবল অদলবদল. সুতরাং এর ঠিক যে কি করা যাক. এখানে আমি আমি দাবি যেখানে মধ্যে কিছু সোয়াপিং কাজ করা যাচ্ছে, আমি করব এগিয়ে যান এবং temp ঘোষণা. এবং আমি এক্স, বলে, এটা সমান সেট করব. তারপর আমি মান পরিবর্তন করা যাচ্ছে না শুধু জেস চাই x এর সঙ্গে এখানে করেনি দুধ এবং কমলার রস Y সমান হতে হবে. এবং আমি সমান হতে Y পরিবর্তন করা যাচ্ছে না এখন আমরা হতে হবে না, কারণ এক্স, একটি বৃত্তে আটকে, বরং Temp. যেখানে অস্থায়ীভাবে আমি - বা যেখানে জেস অস্থায়ীভাবে কমলার রস লাগাতে যে clobbering আগে দুধ সঙ্গে কাপ. তাই আমাকে এখন এগিয়ে যান এবং এই করা যাক. এটা noswap.c বলা হচ্ছে. এবং এখন আমার কোন swap 'চালানো যাক. আমি প্রসারিত এবং যদি সত্যিই আমি, দেখুন উইন্ডো একটি সামান্য বিট, যে এক্স 1, Y 2. এবং তারপর এক্স 2, Y 1. কিন্তু সোমবার আমরা জিনিস যে প্রত্যাহার একটু ভিন্নভাবে তদ্দ্বারা আমি পরিবর্তে, একটি সাহায্যকারী ফাংশন বাস্তবায়িত যদি আপনি হবে, যে আসলে অকার্যকর ছিল. আমি এটা অদলবদল বলা হয়. আমি এটিকে দুটি পরামিতি দিয়েছে, এবং আমি বলা তাদের একটি এবং আমি তাদের বো বলা. সত্যি, আমি তাদের x এবং y পেরেছিলাম. বাঁধন কিছুই নেই যে কাজ থেকে আমাকে. কিন্তু আমি এটা তারপর এর তর্ক করবে সামান্য দ্ব্যর্থক. কারণ সোমবার জন্য রিকল যে আমরা এই পরামিতি ছিল দাবি মান কপি ইন পাস আপনার সঙ্গে তাই এটি শুধু messes মন, আমি মনে করি, আপনি ব্যবহার করতে হলে ঠিক একই ভেরিয়েবল. তাই আমি পরিবর্তে তাদের একটি ডাকবো এবং খ, শুধু স্বচ্ছতার জন্য. কিন্তু আমরা তাদের সবচেয়ে পেরেছিলাম আমরা চাই কিছু. এবং আমি কপি এবং পেস্ট করা যাচ্ছে না সেখানে থেকে কার্যকরভাবে এই কোডটা এখানে মধ্যে. আমি এটা কাজ করে দেখেছি যে কারণ. সুতরাং যে প্রশংসনীয় ভাল আকৃতি আছে. এবং আমি, আমার এক্স আমার x এর পরিবর্তন করব একটি থেকে, খ এবং খ আমার Y আমার Y. তাই অন্য কথায়, সঠিক একই যুক্তি. জেস যে সঠিক একই জিনিস. এবং তারপর আমি কি আছে এক জিনিস এখানে, অবশ্যই, এখন এই ডাকা হয় ফাংশন, অথবা এই ফাংশন কল. তাই আমি দুই সঙ্গে এই ফাংশন কল করা ইনপুট, x এবং y, এবং আঘাত সংরক্ষণ করুন. ঠিক আছে, তাই মৌলিকভাবে একই জিনিস. আসলে, আমি সম্ভবত প্রোগ্রাম তৈরি করেছি দ্বারা অকারণে জটিল শুধু গ্রহণ এর একটি ফাংশন যে লেখা কিছু কোড ছয় লাইন যেহেতু আমি পূর্বে প্রয়োগ করেছে এই তিনটি মাত্র মধ্যে. তাই আমাকে এখন এগিয়ে যান এবং পুনর্নির্মাণ করা যাক এই, কোন swap 'করা. ঠিক আছে, আমি এখানে আপ মাতাল. এই একটি ত্রুটি হতে হবে আপনি হতে পারে আপনার হিসাবে ক্রমবর্ধমান সাধারণভাবে দেখতে প্রোগ্রাম আরো জটিল পেতে. কিন্তু একটি সহজ ফিক্স আছে. আমার সম্পর্কে এখানে আপ ফিরে স্ক্রল যাক. এবং আমি এইজন্য করছি প্রথম ত্রুটি কি? অন্তর্নিহিত ঘোষণা. যে সাধারণত কি নির্দেশ করে? ওহ, আমি প্রোটোটাইপ ভুলে গেছি. আমি কম্পাইলার শেখান ভুলে গেছি যে swap ' বিদ্যমান যাচ্ছে, যদিও তিনি খুব প্রারম্ভে বিদ্যমান নয় প্রোগ্রাম. তাই আমি ঠিক, অকার্যকর, swap 'বলতে যাচ্ছি int-এ একটি int-B, সেমিকোলন. তাই আমি এটা reimplement যাচ্ছি না. কিন্তু এখন এটা কি এখানে নিচে এর সাথে মেলে. এবং বিজ্ঞপ্তি, একটি সেমিকোলন অনুপস্থিতি এখানে, যা প্রয়োজন হয় না যখন রূপায়ণকারী. তাই আমাকে এই পুনর্নির্মাণ করা যাক, কোন swap 'করা. অনেক ভালো আকৃতি. কোন swap 'চালান. এবং এটা অভিশাপ. আমরা সোমবার ছিল যেখানে এখন আমরা ফিরে এসেছি যেখানে জিনিস অদলবদল করা হয়নি. এবং স্বজ্ঞাত ব্যাখ্যা কি কেন এই ক্ষেত্রে? হ্যাঁ? Student: [শ্রবণাতীত]. DAVID Malan: যথাযথভাবে. সুতরাং একটি এবং খ x এবং y এর কপি. এবং বাস্তবিকই, যে কোনো সময় আপনি চলেছি এ পর্যন্ত একটি ফাংশন যে আহ্বান ints মত ভেরিয়েবল পাস - swap 'এখানে আশা করছে না যে, ঠিক যেমন - আপনাকে বলছি কপি পাশ করা হয়েছে. এটি একটি সামান্য বিট লাগে মানে এখন যে জন্য সময়, একটি বিভক্ত দ্বিতীয়, এক থেকে বিট কপি কম্পিউটার অন্য বিট মধ্যে পরিবর্তনশীল. কিন্তু যে যেমন একটি বড় চুক্তি না. কিন্তু তারা তবু একটি কপি করছি. তাই এখন, swap 'র প্রেক্ষাপটে, আমি সফলভাবে আসলে am a ও b পরিবর্তন. বস্তুত, একটি দ্রুত করতে আসুন বৈধতা পরীক্ষা করুন. মুদ্রণ চ একটি আমি, নতুন লাইন% হল. এবং একটি মধ্যে let এর প্লাগ. এখনই বো সঙ্গে একই জিনিস করতে আসুন. এবং এখানে একই জিনিস করে আসুন. এবং এখন, আমাকে ঐ একই লাইন কপি করা যাক আবার ফাংশন নীচে আকর্ষণীয় আমার তিন লাইন পর মৃত্যুদন্ড কার্যকর করা, এবং হতে পারে এখনো আবার a ও b প্রিন্ট করা হবে. এর এই করতে তাই এখন আসুন, কোন swap 'করা. আমার সম্পর্কে টার্মিনাল উইন্ডোর একটি যাক বিট লম্বা, আমরা দেখতে পায় তাই একযোগে এটি বেশি. এবং কোন swap 'চালানো. এক্স 1, Y 2. একটি হল 1, বো 2. এবং তারপর, একটি হল 2, বি 1. তাই এটি শুধু জেস মত কাজ করছে এখানে ভিতরে swap হওয়া করেনি. তবে অবশ্যই, এটা কোন প্রভাব থাকার এর প্রধান ভেরিয়েবল নেভিগেশন. সুতরাং আমরা একটি কৌতুক দেখেছি যেখানে আমরা ঠিক আছে, এই স্থির করা হতে পারে? আপনি এই scoping সমস্যার সম্মুখীন করছেন সমস্যা, আপনি হতে পারে শুধু punt এবং এক্স করতে এবং y কি ধরনের পরিবর্তে ভেরিয়েবল? আপনি তাদের বিশ্বব্যাপী করতে পারে. ফাইলের খুব শীর্ষে তাদের করা এমনকি আমরা 15 খেলা, করেনি. আমরা একটি গ্লোবাল ভেরিয়েবল ব্যবহার করুন. কিন্তু খেলা 15 প্রেক্ষাপটে, এটি একটি বিশ্বব্যাপী আছে যুক্তিসঙ্গত এর , বোর্ড প্রতিনিধিত্ব পরিবর্তনশীল কারণ 15.c পুরো সব খেলা যে বাস্তবায়নের ওপর. যে ফাইল করতে বিদ্যমান কি. কিন্তু এখানে এই ক্ষেত্রে, আমি একটি ফাংশন ও swap 'কলিং. আমি দুটি ভেরিয়েবল অদলবদল করতে চান. এবং এটি মাত্র পঙ্কিল বোধ শুরু করা উচিত যদি আমাদের সব সমাধান আমরা সুযোগ পাতিত যখন সমস্যা বিষয় এটা বিশ্বব্যাপী করতে হয়. খুব দ্রুত আমাদের প্রোগ্রাম কারণ বেশ একটা জগাখিচুড়ি হয়ে যাচ্ছে. এবং আমরা যে খুব sparingly করেনি 15.c. মধ্যে ফলে একটি আছে খুঁজে কিন্তু এটি সক্রিয় পুরাপুরি ভাল উপায়. আমার সম্পর্কে আসলে ফিরে যান এবং মুছে দিন চলুন শুরু করা যাক শুধু এই কোড সরল, চ এর প্রিন্ট করা হবে. এবং আমাকে উত্থাপন করা যাক যে এই প্রকৃতপক্ষে, খারাপ. কিন্তু আমি পরিবর্তে কিছু আস্টেরিক্স মধ্যে যোগ করুন ব্লক এবং বড়, আমি পরিবর্তে এই চালু করতে পারেন যে এক মধ্যে ফাংশন আসলে কর্মক্ষম. তাই আমাকে এখানে ফিরে যান এবং বলার অপেক্ষা রাখে না সত্য বলিয়া স্বীকার করা যাক আস্টেরিক্স, সবসময় কঠিন তাই আমি বড় বলবো. আমি যে এক আপ fess করব. ঠিক আছে. এবং এখন, আমি কি যাচ্ছি পরিবর্তে কি? সব সুতরাং প্রথম, আমি উল্লেখ করতে যাচ্ছি যে পরিবর্তে মধ্যে কোন int পাশ swap 'র ফাংশন, আমি পরিবর্তে আছি int-এ তারা বলে যাচ্ছে. এখন, তারা কি নির্দেশ করে? এই যে একটি পয়েন্টার যে ধারণা Binky, claymation চরিত্র ছিল, আগে একটি মুহূর্ত উল্লেখ. আমরা int-এ তারকা, মানে বলতে তাই আপনি যদি এটি এখন একটি হতে যাচ্ছে নয় এর মান দ্বারা গৃহীত. এটি ইন কপি করা যাচ্ছে না বরং, একটি ঠিকানা ইন হস্তান্তর করা যাচ্ছে তাই আপনার কম্পিউটার এর যে ভিতরে প্রত্যাহার অন্যথায়, মেমরি আভা হয় উপস্থিত RAM-র হিসাবে পরিচিত. এবং যে উপস্থিত RAM-র শুধুমাত্র একটি হল বাইট আভা. আপনার ম্যাক বা আপনার পিসি আছে তাই আপনি যদি দুই গিগাবাইট, আপনি 2 আছে মেমরি বিলিয়ন বাইট. এখন শুধু অনুমান করা যাক ঠিক যে কিছু সুন্দর এবং সুশৃঙ্খল রাখা, আমরা একটি ঠিকানা ধার্য - একটি সংখ্যা - আপনার কম্পিউটারে উপস্থিত RAM-র প্রতি বাইট থেকে. যারা 2 প্রথম বাইট বিলিয়ন শূন্য সংখ্যা হয়. পরের এক বাইট এক নম্বর, সংখ্যা উপর দুই, সমস্ত পথ, বিন্দু বিন্দু প্রায় 2 বিলিয়ন বিন্দু. সুতরাং আপনি বাইট সংখ্যা পারেন আপনার কম্পিউটারের মেমরির. সুতরাং যে যে এর অনুমান করা যাক কি আমরা একটি ঠিকানা দ্বারা অর্থ. তাই আমি কি int-এ তারা একটি, দেখুন এখন swap 'র মধ্যে প্রেরণ করা হয় একটি ঠিকানা. নেই তার মান, কিন্তু যাই হোক না কেন তার ডাক ঠিকানা তাই কথা বলতে হয় - RAM-র মধ্যে তার অবস্থান. এবং একইভাবে বো জন্য, আমি যাচ্ছি একই জিনিস বলে. Int, তারকা, খ. একটি সরাইয়া, টেকনিক্যালি তারা হিসাবে অন্য স্থানে যেতে পারে. কিন্তু আমরা হচ্ছে তারা নেভিগেশন প্রমিত করব ডাটা টাইপ ডান পাশে. তাই স্বাক্ষর এখন অর্থ বিনিময় করা, আমাকে দিতে কোন int এর ঠিকানা, এবং কল যে ঠিকানা. এবং আমাকে একটি অন্য ঠিকানা দিন int এবং যে ঠিকানা বো কল. কিন্তু এখন এখানে আমার কোড পরিবর্তন করতে হয়েছে. কারণ আমি int-temp ঘোষণা যদি - যা টাইপ int-এর এখনও - কিন্তু আমি, এটি একটি সঞ্চয় মান কি ধরনের? পরিষ্কার করা, আমি সঙ্গে একটি একটি নির্বাণ am এখনই লিখিত হিসাবে কোড? আমি একটি মধ্যে অবস্থান নির্বাণ করছি. কিন্তু আমি না যত্ন অবস্থান এখন, ডান? Temp শুধু জেস 'তৃতীয় কাপ বিদ্যমান অস্তিত্ব ছিল, কি উদ্দেশ্যে? একটি মান সংরক্ষণ করার জন্য. দুধ বা কমলার রস. আসলে এর ঠিকানা সঞ্চয় নেই সেগুলো হয়, যা একটি মতানুযায়ী এই বাস্তব সামান্য nonsensical যাহাই হউক না কেন বিশ্বের প্রেক্ষাপটে. সত্যিই তাই, আমি কি temp মধ্যে লাগাতে চান একটি ঠিকানা, কিন্তু হল না একটি বিষয়বস্তু. একটি 123 মত একটি সংখ্যা সুতরাং, যদি এই হয় যে মেমরি 123rd বাইট একটি মাত্র , অধিষ্ঠিত হতে হবে যে মান একটি অধিষ্ঠিত হতে হবে. , আমি যে ঠিকানায় যেতে চান আমি তারা একটি বলতে হবে. একইভাবে, যদি আমি কি পরিবর্তন হয়েছে ঠিকানাতে একটি, আমি পরিবর্তন এই একটি শুরু. আমি কি সঞ্চয় করতে চান তাহলে অবস্থানে কি সঙ্গে অবস্থান বো এ, তারকা বো তারা. এই বেশ তাই সংক্ষেপে, এমনকি যদি এখনো মধ্যে ডুবন্ত - এবং আমি আশা না এটি এত দ্রুত যে - আমি যা করছি সব prefixing বুঝি যে এগুলো আমার ভেরিয়েবল বড়, উক্তি মান দখল না. মান পরিবর্তন করবেন না. বরং, যারা ঠিকানায় যান এবং মান পেতে. যে ঠিকানা এবং পরিবর্তন যান সেখানে মান. সুতরাং এখন, আমাকে উপরে ফিরে স্ক্রল যাক ঠিক এখানে, এই লাইন ঠিক করা মেলে প্রোটোটাইপ পরিবর্তন করুন. কিন্তু আমি এখন অন্য একটি জিনিস করতে হবে. Intuitively, আমি ধরনের পরিবর্তন করে থাকেন আর্গুমেন্ট যে swap 'আশা করছে না যে, আমি আর কী করতে হবে না আমার কোড পরিবর্তন? আমি ও swap 'যখন কল. ঠিক এখন, কি কারণ আমি এখনও অদলবদল করতে পার? মান x এবং y এর মান, অথবা দুধ এবং কমলার রস. কিন্তু আমি যে কাজ করতে চান না. আমি পরিবর্তে কি প্রেরণ করতে ইচ্ছুক? x এর অবস্থান এবং y এর অবস্থান. তাদের পোস্টাল ঠিকানা, কি কি তাই কথা বলতে. সুতরাং যে কাজ করতে, একটি ampersand আছে. ঠিকানা মত ধ্বনি ampersand ধরনের. তাই N, ampersand, ঠিকানা এক্স, এবং y এর ঠিকানা. তাই এটা আমরা ব্যবহার করি যে ইচ্ছাকৃত এর ampersands ফাংশন কলিং যখন, এবং তারা ঘোষণা এবং যখন ফাংশন রূপায়ণকারী. এবং শুধু ampersand মনে অপারেটর ঠিকানা, এবং তারা অপারেটর সেখানে যান - অথবা, আরও সঠিকভাবে, dereference অপারেটর. যাতে মাত্র শব্দের একটি সম্পূর্ণ অনেক এখন, আশা, swap 'যাচ্ছে বলে যে সঠিক হতে হবে. আমাকে এগিয়ে যান এবং করতে চলুন শুরু করা যাক - পাছে, এর আসলে ফাইল রিনেম করা যাক এই প্রোগ্রাম এখনও কোন swap 'নামে অভিহিত হইবে. আমি মনে করি আমরা এখন এটি swap.c ডাকবো দাবি করে যে. সুতরাং অদলবদল করতে. বিন্দু, স্ল্যাশ, অদলবদল. এবং এখন প্রকৃতপক্ষে, এক্স 1, Y 2. এবং তারপর, X 2, y এর এক. আমরা এই একটি ব্যবহার করতে পারবেন না যদি এর দেখতে দিন কি হিসেবে ভিন্ন সামান্য বিট এখানে হচ্ছে. প্রথমত, সম্পর্কে আমাদের নেভিগেশন জুম যাক এখানে পর্দায় আঁকা. এবং আমাকে একটি মুহূর্ত জন্য উত্থাপন করা যাক - এবং আমি এখানে আঁকা যখনই প্রতিফলিত হবে আপ সেখানে এখন - সম্পর্কে উত্থাপন করা যাক যে এখানে মেমরি আভা, বা উপস্থিত RAM-র, আমার কম্পিউটার এর ভিতরে. এবং এই, কামড় সংখ্যা হতে হবে , এর বলে 1 যাক. এই বাইট সংখ্যা 2 হবে. এবং আমি আরো আভা, না এবং করব তারপর বিন্দু বিন্দু বিন্দু একটি গুচ্ছ 2 বিলিয়ন আছে যা নির্দেশ এই জিনিস. 4, 5, এবং তাই ঘোষণা. সুতরাং প্রথম পাঁচ বাইট আছে আমার কম্পিউটার এর মেমরি. ঠিক আছে? 2 বিলিয়ন বাইরে খুব কম. কিন্তু এখন আমি উত্থাপন করা যাচ্ছে না নিম্নলিখিত. আমি এক্স যাচ্ছে উত্থাপন করা যাচ্ছে না সংখ্যা 1 সংরক্ষণ, এবং y যাচ্ছে সংখ্যা 2 সঞ্চয়. এবং আমাকে এখন এগিয়ে যান এবং প্রতিনিধিত্ব করে দেওয়া এই মান হিসাবে অনুসরণ করে. নিম্নরূপঃ এই কাজ চলুন শুরু করা যাক. আমাকে শুধু এক দ্বিতীয় দিন. এক দ্বিতীয়. ঠিক আছে. আমি এই সামান্য করতে চাই - আবার এই কাজ করতে দিন. অন্যথায় আমি যাচ্ছে এবং ব্যবহার করছি একই সংখ্যা, অজানতে, একাধিক বার. তাই শুধু তাই আমরা বিভিন্ন সংখ্যা আছে কথা বলার জন্য, এর যাক এই বাইট কল সংখ্যা 123, 124, 125, 126, এবং বিন্দু বিন্দু বিন্দু. এবং আমি করতে যাচ্ছি যে দাবি করা যাক এখানে মান 1, এবং মান 2 রাখা এখানে অন্যথায়, x এবং y হিসাবে পরিচিত. সুতরাং এটা ঠিক যে ঘটবে এই হল x, এই Y হয়. এবং কিছু কিছু র্যান্ডম সুযোগ দ্বারা, কম্পিউটার, অপারেটিং সিস্টেম, অবস্থানে x এর লাগাতে ঘটেছে সংখ্যা 123. এবং y অবস্থান 124 এ শেষ পর্যন্ত - এটা অভিশাপ. আমি এই সংশোধন করা উচিত. মানুষ ওহ, আমি সত্যিই এই কাজ করতে চান? হ্যাঁ, আমি এটা ও ঠিক করতে চান এই আজ সঠিক বো. দুঃখিত, এই নতুন. 127, 131, এবং আমি এই হতে চাই না জটিল, কিন্তু কেন আমি পরিবর্তন হয়নি সেখানে সংখ্যা? আমি ints করতে চান, কারণ আসলে চার বাইট হতে. সুতরাং এই বিষয়ে সুপার মলদ্বারে হতে দিন. যদি 1 সুরাহা হতে হবে যাতে 123, 2 ঠিকানায় হতে যাচ্ছে এটা ঠিক 4 byes দূরে এর 127 কারণ. এই যা. এবং আমরা সব ভুলে গিয়ে পাবেন বিশ্বের অন্যান্য ঠিকানা. তাই এক্স, অবস্থান 123 এ আছে Y অবস্থান 127 এ আছে. এবং এখন, আমি আসলে কি করতে হবে কাজ করতে চান? আমি এখন ও swap 'যখন কল, কি আসলে নেভিগেশন যাচ্ছে? ওয়েল, আমি ও swap 'কল, আমি কথা প্রসঙ্গে করছি x এর ঠিকানা এবং y এর ঠিকানা. সুতরাং উদাহরণস্বরূপ, যদি এই দুই টুকরা কাগজ এখন দুটি উপস্থাপন আর্গুমেন্ট a ও b অদলবদল, এখন আমি কি am , এই প্রথম লিখতে যাচ্ছি আমি একটি হিসাবে পড়ুন কল করতে যাচ্ছি যা? ঠিক, 123. তাই আমি দাবি এই একটি হল. এটি একটি পরামিতি হয়. আমি সেখানে x এর ঠিকানা নির্বাণ করছি. ওটা কি? ওটা কি? না, না. যে ঠিক আছে. এখনও ভাল, এখনও ভাল. তাই এই একটি হল. এবং এখন কাগজ দ্বিতীয় টুকরা উপর, এই বো হতে যাচ্ছে, এবং আমি কি am লেখা হতে যাচ্ছে কাগজের এই টুকরা? 127. সুতরাং পরিবর্তন যে শুধু এই গল্প আমাদের আগের কহন হয় বরং 1 আক্ষরিক তুলনায় এবং 2, আমি 123 এবং 127 মধ্যে পাস করতে যাচ্ছে. এবং আমি এখন এই ভিতরে করা যাচ্ছে না এই বাক্স, সব ঠিক? সুতরাং যে কালো বাক্সে এখন প্রতিনিধিত্ব করে swap 'র ফাংশন. এদিকে, এর এখন কেউ আছে যাক swap 'র ফাংশন বাস্তবায়ন. এখানে কেউ দিবেন স্বেচ্ছাকর্মী করতে চান? উপর আসা. আপনার নাম কি? চার্লি. ঠিক আছে, চার্লি. উপর আসা. সুতরাং চার্লি খেলতে যাচ্ছে আমাদের কালো বাক্সে ভূমিকা. আমি আপনি কি করতে চান কি এবং চার্লি, এখন যেমন একটি উপায় swap 'বাস্তবায়ন করা হয় যে, ঐ দুটি ঠিকানা দেওয়া, আপনি আসলে চালু হয়েছে মান পরিবর্তন করতে. এবং আমি আপনার কানের মধ্যে ফিস্ ফিস্ শব্দ পাবেন এখানে টিভি চালানোর জন্য কিভাবে. তাই এগিয়ে যান, এবং আপনি কালো বাক্সে করছি. সেখানে পৌঁছান. আপনি কি মানের জন্য দেখুন, এবং না আপনি বো জন্য কি মান দেখেন? Charlie: একটি 123 এবং বো 127 হয়. DAVID Malan: ঠিক আছে, ঠিক. শুধু একটা মুহূর্ত জন্য সেখানে এখন বিরতি. আপনি এখন করতে যাচ্ছেন প্রথম জিনিস কোড অনুযায়ী - যা আমি এখন পর্দায় টান আপ করব - সামান্য বরাদ্দ হতে যাচ্ছে মেমরি বিট temp বলা হয়. তাই আমি এগিয়ে যান যাচ্ছে এবং করছি আপনি যে মেমরি দিতে. তাই এই তৃতীয় পরিবর্তনশীল হতে যাচ্ছে আপনি ব্যবহারযোগ্য আছে আপনি temp বলা হয়. এবং আপনি কি লিখতে যাচ্ছি কাগজ temp টুকরা উপর? Charlie: পয়েন্টার, ডান? DAVID Malan: ঠিক আছে, ভাল না পয়েন্টার নয়. তাই আমি করেছি যে কোড লাইন ডান দিকে হাইলাইট, সেখানে শুরু করা যাক. এটা তারা একটি বলছেন. সুতরাং একটি বর্তমানে সংরক্ষণ করা হয় সংখ্যা 123. এবং শুধু intuitively কি, তারা 123 বোঝাতে চেয়েছেন? কিন্তু নির্দিষ্টভাবে, একটি যদি 123, একটি তারকা মানে কি? একটি মান. অথবা অধিক আকস্মিকভাবে, সেখানে যান. সুতরাং একটি ধারণ সম্পর্কে উত্থাপন করা যাক আপনার হাত, এগিয়ে যান এবং যে আচরণ যদিও এটি একটি মানচিত্রের. এবং কম্পিউটার এর নিজের উপর পায়চারি মেমরি, এবং কি আমাদের খুঁজে অবস্থান 123 এ. যথাযথভাবে. সুতরাং আমরা অবস্থান 123 এ দেখতে কি স্পষ্টত হয়? ঠিক আছে, তাই এখন আপনি কি মান temp করা যাচ্ছে? যথাযথভাবে. তাই এগিয়ে যান এবং যে না. এবং এক টুকরা উপর সংখ্যা 1 লিখুন বর্তমানে temp খেতাবধারী যে কাগজ. এবং এখন পরবর্তী ধাপে যে আপনি বাস্তবায়ন করতে যাচ্ছেন কি হতে যাচ্ছে. ওয়েল, ডান দিকে কোড পরের লাইন তারা বো. B, অবশ্যই, একটি ঠিকানা সঞ্চয় করে. যে 127 ঠিকানাগুলি. রাশি বো আকস্মিকভাবে বলতে কি, মানে? যে অবস্থান এ যান. তাই এগিয়ে যান এবং কি আমাদের খুঁজে অবস্থান 127 এ. ঠিক আছে. অবশ্যই, অবস্থান 127 এ, এখনও মান 2. তাই আপনি এ এখন দোকান যাচ্ছে একটি মধ্যে অবস্থান যাই হোক না কেন এর? তাই তারা একটি উপায় একটি অবস্থান যান. একটি অবস্থান কি? যথাযথভাবে. সুতরাং এখন, আপনি পরিবর্তন করতে চান যে অবস্থান এ কি - আমি এগিয়ে যান এবং রান করব রবার এখানে আছে. এবং এখন ব্রাশ তা প্রতিহত করা. কি নম্বর আপনাকে লিখতে যাচ্ছি এখন যে খালি বাক্সে? যথাযথভাবে. সুতরাং কোড এই লাইন, পরিষ্কার করা - যাক আমার সম্পর্কে চার্লি এর কাজ কি বিরাম এবং এখানে বাতলান কি তিনি ঠিক করা হয় অবস্থান 123 এ যে বক্সে লিখুন বো এ পূর্বে যে মান. তাই এখন আমরা প্রকৃতপক্ষে বাস্তবায়িত করেছি কোড এই দ্বিতীয় লাইন. এখন দুর্ভাগ্যবশত, আছে অবশিষ্ট এখনও এক লাইন. আক্ষরিক, temp মধ্যে এখন কি হয়? এটা সম্ভবত এক নম্বর আছে. যে একটি ঠিকানা না. এটা সাজানোর, শুধু একটি সংখ্যা আছে সপ্তাহে এক থেকে একটি পরিবর্তনশীল. আর এখন আপনি তারা বি, এর মানে হল যে যখন ঠিকানা বো যান, যা হয় এখানে কোর্স. তাই একবার আপনি সেখানে পেতে - আমি এগিয়ে যান এবং আসলে কি নিশ্চিহ্ন করব আছে - আপনি এবং কি অবস্থান 127 এ এখন লিখতে যাচ্ছি? Charlie: টেম্প, এক যা. DAVID Malan: টেম্প, এক যা. এবং শেষ পর্যন্ত temp কি ঘটবে? ভাল, আমরা সত্যিই জানি না. আমরা সত্যিই না যত্ন. আমরা একটি ফাংশন বাস্তবায়ন করেছি যে কোনো সময় সেটা অনেক দূরে, কোন স্থানীয় ভেরিয়েবল আপনার আছে প্রকৃতপক্ষে স্থানীয়. এবং তারা ঠিক অন্তর্হিত হওয়া. তারা অপারেটিং পুনরায় দাবি করছি ঘটনাক্রমে সিস্টেম. সুতরাং temp এখনও আছে যে মান 1 সাজানোর মৌলিকভাবে হয় আমাদের নীরস. ঠিক আছে, তাই সাধুবাদ একটি বৃত্তাকার আমরা চার্লি জন্য পারে. খুব ভাল কাজ করেছেন. ঠিক আছে, তাই কি আরও আছে এই আমরা কি করতে পারি মানে? সুতরাং এটা যে আমরা চলেছি দেখা যাচ্ছে যে কয়েক সাদা মিথ্যা বলার বেশ কিছু সময়ের জন্য. প্রকৃতপক্ষে, এটা যে একটি স্ট্রিং সক্রিয় আউট এই সময়ে সব, সত্যিই নয় কোনটাই অক্ষরের ক্রম. এটি ধরনের যে intuitively হয়. কিন্তু টেকনিক্যালি বলতে গেলে, স্ট্রিং একটি আমরা ভেতরে ঘোষিত যে ডাটা টাইপ বিশ্বের সরল CS50 লাইব্রেরি বর্গ প্রথম কয়েক সপ্তাহের জন্য. কি একটি স্ট্রিং সত্যিই ঠিকানা হল কোথাও RAM-র মধ্যে একটি অক্ষর. একটি স্ট্রিং 123 মত সত্যিই একটি সংখ্যা demarcate আপনি যে এরকম অথবা 127, একটি স্ট্রিং শুরু যেখানে আপনার কম্পিউটার এর মেমরি. কিন্তু এটা প্রতিনিধিত্ব করে না স্ট্রিং, প্রতি SE নিজেই. এবং আমরা এই হিসাবে অনুসরণ করে দেখতে পারেন. আমাকে এগিয়ে যান এবং আপ খুলুন মধ্যে যে কিছু কোড আজ এর সোর্স কোড উদাহরণ. এবং আমি এগিয়ে যান এবং খুলতে যাচ্ছি আপ, তুলনা-0.c, এর বলা যাক. এই যাচ্ছে একটি বগী প্রোগ্রাম নিম্নরূপ বাস্তবায়িত করতে হবে. প্রথম. আমি কিছু বলতে যাচ্ছি. তারপর আমি এগিয়ে যান যাচ্ছে এবং করছি ব্যবহারকারী থেকে একটি পংক্তি পেতে পরের লাইনে. তারপর আমি আবার বলতে যাচ্ছি. তারপর আমি অন্য পেতে যাচ্ছি ব্যবহারকারী থেকে পংক্তি. এবং বিজ্ঞপ্তি, আমি এক দেখাচ্ছে করছি গণ নামক একটি পরিবর্তনশীল স্ট্রিং, এবং এই স্ট্রিং অন্য T নামক একটি পরিবর্তনশীল. এবং এখন আমি খুব, দাবি করতে যাচ্ছি যুক্তিসঙ্গতভাবে, গুলি সমান হলে, টি সমান যে স্ট্রিং একই. আপনি একই জিনিস টাইপ করুন. অন্যথায়, স্ট্রিং হয় না একই জিনিস. সব পরে, আমরা ইনপুট দুই ints, দুটি যদি চিহ্ন, দুটি floats, দুই টেনিস, কোন আমরা স্বপ্ন করেছি ডেটা প্রকার এ পর্যন্ত তাদের তুলনা - আমরা একটি সময় আগে খুব স্পষ্ট করে প্রত্যাহার আপনি এই কাজ করতে না, যে কারণে একক সমান চিহ্ন অবশ্যই হয় নিয়োগ অপারেটর. সুতরাং যে একটি বাগ সংশোধন করা হবে. আমরা সমান সমান চিহ্ন ব্যবহার, প্রকৃতপক্ষে তুলনা করা হয়, যা সত্য সমতার জন্য জিনিস. কিন্তু আমি এই বগী দাবি. আমি এগিয়ে যান এবং শূন্য তুলনা করতে হলে, এবং তারপর বিন্দু স্ল্যাশ শূন্য তুলনা করবেন না. এবং আমি হ্যালো, এর বলা যাক, টাইপ. এবং তারপর এর আবার হ্যালো বলা যাক. আক্ষরিক একই জিনিস, কম্পিউটার আমি বিভিন্ন জিনিষ টাইপ করা হয়নি. এখন হয়তো, আমি শুধু কিছু mistyped. আমি আমার নাম এই সময় টাইপ করব. আমি বলতে চাচ্ছি, হ্যালো. হ্যালো. এটা প্রতি একক সময় ভিন্ন. ওয়েল, যে কেন হয়? কি সত্যিই যাচ্ছে ফণা নীচে? ভাল, কি সত্যিই নীচে যাচ্ছে ফণা তারপর স্ট্রিং আমি উদাহরণস্বরূপ যে প্রথমবার টাইপ শব্দ অবশ্যই, হ্যালো হয়. কিন্তু আমরা নীচে এই প্রতিনিধিত্ব যদি ফণা, পুনরাহ্বান যে একটি স্ট্রিং একটি অ্যারে আছে. এবং আমরা অতীতে যতটা বলেন করেছি. আমি ভালো যে অ্যারের আঁকা, তাই যদি আমি বেশ কিছু উপস্থাপন করতে যাচ্ছে আমরা একটি মুহূর্ত আগে কি অনুরূপ. এবং কিছু আসলে আছে খুব,, এখানে বিশেষ. আমরা এ কি ছিল নির্ধারণ হয়নি প্রত্যেক স্ট্রিং এর শেষ? হ্যাঁ, এই ব্যাকস্ল্যাশ শূন্য, যা প্রতিনিধিত্বমূলক মাত্র পথ, আক্ষরিক, 00000000. একটি সারিতে আট 0 বিট. আমি, সত্যি, জানি না এই পর কি. যে শুধু একটি গুচ্ছ অধিক RAM এর আমার কম্পিউটার এর ভিতরে. কিন্তু এই একটি অ্যারে. আমরা আগে অ্যারে সম্পর্কে বললাম. এবং আমরা সাধারণত অ্যারে সম্পর্কে কথা বলতে পাঁচ শূন্য হচ্ছে, তারপর এক, দুই. কিন্তু যে শুধু সুবিধার জন্য. এবং যে সম্পূর্ণরূপে আপেক্ষিক না. আপনি আসলে থেকে মেমরি পেয়ে থাকেন যখন কম্পিউটার, এটি অবশ্যই কোনো এর 2 বিলিয়ন কিছু অদ্ভুত বাইট, সম্ভাব্য. তাই সত্যিই ফণা নীচে, এই সব সময়, হ্যাঁ. এই খুব ভাল বন্ধনী শূন্য হতে পারে. কিন্তু আপনি পুনরায় নীচের স্তরের এমনকি গভীর খনন হলে ফণা, যে সত্যিই সংখ্যা 123 সুরাহা করে. এই ঠিকানাটি 124 হয়. এই ঠিকানাটি 125 হয়. এবং আমি এই সময় পর্যন্ত যৌনসঙ্গম করা হয়নি. এই এখন এক বাইট হয় সরাইয়া কি কারণে? একটি গৃহস্থালি কত বড় হয়? একটি গৃহস্থালি মাত্র এক বাইট. কোন int সাধারণত চার বাইট. আমি এটা 123 প্রণীত কেন, যাতে এর 127, 131 এবং তাই ঘোষণা. এখন আমি গণিত সহজ রাখতে পারেন এবং শুধু প্লাস 1 কি. এবং এখন এই সত্যিই কি হয় ফণা নীচে নেভিগেশন. আপনি যদি এই মত কিছু ঘোষণা সুতরাং যখন স্ট্রিং গুলি, এই আসলে - এটি সক্রিয় আউট - গৃহস্থালি তারা. রাশি, অবশ্যই, মানে ঠিকানা, ওরফে পয়েন্টার. সুতরাং এটা কিছু ঠিকানা. এটা কি ঠিকানা হল? ওয়েল - আমি খুব দেখতে পারেন যারা শুধুমাত্র এক নই গুরুত্বপূর্ণ পয়েন্ট আমি তৈরীর, বা মনে করছি আমি তৈরি করছি. তাই স্ট্রিং - দু: খিত জিনিস আমি একটি মনিটর আছে অধিকার আছে যেখানে আমি দেখা যায় যে থাকতে পারে. ঠিক আছে, তাই স্ট্রিং গুলি কি আমি পূর্বে ঘোষণা করেন. কিন্তু এটি একটি সামান্য ধন্যবাদ, সক্রিয় আউট CS50 লাইব্রেরি মধ্যে ম্যাজিক, এই সব সময় স্ট্রিং আক্ষরিক আছে গৃহস্থালি তারা হয়েছে. তারা আবার মানে পয়েন্টার বা ঠিকানা. এটি flanking যে সত্য শব্দ গৃহস্থালি এটা মানে একটি চরিত্রের ঠিকানা. স্ট্রিং বলা হয়, এবং আমি টাইপ তাই আপনি যদি এইচ ই, L-, L-হে মধ্যে পেতে কি এখন উত্থাপন স্ট্রিং আক্ষরিক সব ফিরে হয়েছে এই সময়, আমরা করেছি বরং যদিও বিশ্বের oversimplified? স্ট্রিং আসলে পেতে কি তার ফিরতি মূল্য হিসাবে ফিরে আসতে? এই ক্ষেত্রে 123, উদাহরণস্বরূপ. আমরা পূর্বে স্ট্রিং পেতে যে বলেন করেছি কেবল একটি স্ট্রিং, একটি ক্রম ফেরৎ অক্ষর. কিন্তু যে একটি সাদা মিথ্যা একটি বিট. উপায় স্ট্রিং সত্যিই কাজ পেতে ফণা নীচে এটি পায় একটি ব্যবহারকারী থেকে পংক্তি. এটা যে অক্ষরগুলি দেখছেন সেগুলি plops মেমরির মধ্যে সে ধরনের. এটা শেষে ব্যাকস্ল্যাশ শূন্য রাখে অক্ষরের যারা ক্রমানুসারে. কিন্তু তারপর স্ট্রিং কি পায়্ আক্ষরিক ফিরে? এটা আক্ষরিক এর ঠিকানা ফেরৎ RAM-র মধ্যে প্রথম বাইট যে এটা শক্তি যে জন্য ব্যবহৃত. এবং এটি ফিরে যে শুধু সক্রিয় আউট একটি একক ঠিকানা স্ট্রিং মধ্যে প্রথম অক্ষর, যা পুরো খোঁজার জন্য যথেষ্ট পংক্তি. অন্য কথায়, স্ট্রিং আছে না পেতে 123 ও 124 এবং 125 ফিরে যাওয়ার জন্য. এটা সম্পর্কে একটি দীর্ঘ দিতে হবে না যে বাইট সমস্ত তালিকা আমার স্ট্রিং ব্যবহার করা হয়. এক, কারণ তারা সব ফিরে এসেছি. এবং আমি প্রথম ঠিকানা নেভিগেশন দুই, ভিত্তি করে স্ট্রিং শেষ আউট চিত্র যেখানে করতে পারেন. কিভাবে? বিশেষ নাল অক্ষর, শেষে শূন্য ব্যাকস্ল্যাশ. তাই অন্য কথায়, যদি আপনি কাছাকাছি পাস - ভেরিয়েবল এর ভিতরে - একটি গৃহস্থালি এর ঠিকানা, এবং আপনি অনুমান কোনো স্ট্রিং এর শেষে, কোন যে আমরা মানুষ হিসাবে অক্ষরের ক্রম আপনি অনুমান, যদি স্ট্রিং মনে করি যে সেখানে কোন স্ট্রিং এর শেষে একটি ব্যাকস্ল্যাশ শূন্য, আপনি সুবর্ণ করছি. আপনি সবসময় জানতে পারেন, কারণ একটি স্ট্রিং এর শেষে. এখন কি সত্যিই তারপর যাচ্ছে এই প্রোগ্রামে নেভিগেশন? কেন এই প্রোগ্রাম, হয় তুলনা-0.c, বগী? আসলে তুলনা করা হচ্ছে? হ্যাঁ? Student: [শ্রবণাতীত]. DAVID Malan: যথাযথভাবে. এটা অবস্থানের তুলনা এর স্ট্রিং. ব্যবহারকারী হ্যালো একবার টাইপ করা হয়েছে, তাই যদি আমি করেনি, মেমরি আপ শেষ হতে পারে ভালো খুঁজছেন. আবার হ্যালো ব্যবহারকারী তারপর ধরনের হলে, কিন্তু আবার স্ট্রিং পেতে কল করে, C, আপনি বিশেষ করে চতুর শেখান না, যদি না এটা কোড লিখে চতুর হতে. সি - আরো সাধারণভাবে এবং কম্পিউটার - আপনি হ্যালো আবার শব্দ টাইপ করুন, যদি আপনি পেতে যাচ্ছেন কি জানেন. আপনি শুধু এই একটি দ্বিতীয় অ্যারের পেতে যাচ্ছেন মেমরি যে, হ্যাঁ, হতে ঘটবে এইচ ই, L-, L-হে সংরক্ষণ এবং তাই ঘোষণা. এটা একই তাকান যাচ্ছে আমাদের মানুষ, কিন্তু এই ঠিকানা 123 নাও হতে পারে. এটা ঠিক যে ঘটতে পারে অপারেটিং সিস্টেমের কিছু উপলব্ধ আছে অবস্থানে উদাহরণস্বরূপ স্থান - নির্বিচারে কিছু বলা যাক না, ভালো অবস্থান 200 হয়. এবং এই অবস্থান 201 হয়. এবং এই অবস্থান 202 হয়. আমরা যে যেখানে কোন ধারণা আছে মেমরির মধ্যে হতে যাচ্ছে. কিন্তু কি এর মানে কি যে হয় গুলি শেষ পর্যন্ত সংরক্ষণ করা যাচ্ছে? সংখ্যা 123. , টি সংরক্ষণ করা যাচ্ছে কি এই নির্বিচারে উদাহরণে? সংখ্যা 200. এবং যে তারপর, মানে সব, সম্ভবত হয় 123 200 সমান না. তাই এই অবস্থা কখনও যদি সত্য মূল্যায়ণ করা হয়. পান স্ট্রিং বিভিন্ন ব্যবহার করা হয়, কারণ মেমরির অংশ প্রতিটি সময়. এখন আমরা এই আবার দেখতে পারেন অন্য একটি উদাহরণ হবে. আমাকে এগিয়ে যান এবং কপি-0.c আপ খুলুন. আমি এই উদাহরণে যাচ্ছে দাবি চেষ্টা - কিন্তু ব্যর্থ - দুই স্ট্রিং কপি হিসাবে অনুসরণ করে. আমি কিছু বলতে যাচ্ছি ব্যবহারকারী যাও. আমি তখন পেতে যাচ্ছি স্ট্রিং এবং এটি গুলি কল. এবং এখন, আমি এখানে এই চেক করছি. আমরা এই একটি যখন ফিরে উল্লেখ করেছে. কিন্তু যখন, স্ট্রিং রিটার্ন নাল পেতে পারে অন্য বিশেষ অক্ষর, বা বিশেষ প্রতীক let এর বলে. এটি মেমরি আউট যদি. উদাহরণস্বরূপ, ব্যবহারকারী সত্যিই যদি একটি atrocious কঠিন এবং ধরন হচ্ছে এ অক্ষরের সংখ্যা কীবোর্ড এবং হিট লিখুন. অক্ষরের যে সংখ্যা ঠিক করা সম্ভব না হলে পাগল যাই হোক না কেন জন্য উপস্থিত RAM-র মধ্যে মাপসই করা হবে কারণ, ভাল স্ট্রিং প্রতাপ পেতে খুব ভাল নাল ফিরে. অথবা আপনার প্রোগ্রাম নিজেই অনেক কাজ হলে অন্যান্য জিনিসপত্র এবং ঠিক আছে পান স্ট্রিং জন্য পর্যাপ্ত মেমরি সফল সমাপ্তির ইঙ্গিত দেওয়া, এটা শেষ হতে পারে নাল ফিরে আপ. কিন্তু আরও ভালো হতে দেওয়া এই কি হিসেবে. গণ এর ডাটা টাইপ সত্যিই কি? চর তারা. তাই এটি এখন আমরা ছুলা পারেন সক্রিয় আউট নাল স্তর ব্যাক. দেখা যাচ্ছে, নাল হল - হ্যা, অবশ্যই একটি বিশেষ চিহ্ন. কিন্তু এটি সত্যিই কি? আসলে, নাল শুধু একটি প্রতীক যে আমরা মানুষ হিসাবে ভাল শূন্য উপস্থাপন করতে হয়. C-এর লেখক, এবং কম্পিউটার সুতরাং আরো সাধারণভাবে, বছর আগে সিদ্ধান্ত যে, আপনি জানেন কি. কেন আমরা তা নিশ্চিত না যে ব্যবহারকারী কোন তথ্য কখনও, কখনও কখনও হয় Bye শূন্য সংরক্ষিত? আসলে, এমনকি আমার নির্বিচারে উদাহরণে আগে, আমি সংখ্যায়ন শুরু হয়নি শূন্য এ বাইট. আমি এক সময়ে শুরু হয়. আমি বিশ্বের যে মানুষ জানত কারণ শূন্য রিজার্ভ করার সিদ্ধান্ত নিয়েছি যে কেউ এর উপস্থিত RAM-র মধ্যে বাইট বিশেষ কিছু. কারণ হচ্ছে, যে কোনো সময় আপনি চান কিছু ভুল সর্বস্বান্ত হয়েছে যে সংকেত ঠিকানার ক্ষেত্রে, আপনি ফিরে নাল - অন্যথায় শূন্য নামে পরিচিত - এবং আপনি কোন আছে জানি যে কারণ পরিষ্কারভাবে, ঠিকানা শূন্য এ তথ্য legit একটি ত্রুটি মানে. এবং যে আমরা কনভেনশন দ্বারা, চেক কেন নাল এবং রিটার্ন কিছু যাদের ক্ষেত্রে এক মত. এখন আমরা নিচে স্ক্রল, তাই যদি শুধু এই হয় তারপর কিছু ত্রুটি পরীক্ষা করা, শুধুমাত্র ক্ষেত্রে কিছু [সাথে কিছু ভুল? জামিন?] পুরাপুরি এবং প্রোগ্রাম প্রস্থান তাড়াতাড়ি ফিরে. এই লাইন এখন পুনর্লিখিত হতে পারে এই হিসাবে, যা এর মানে কি? বাম দিকে, আমাকে আরেকটা দিতে একটি অক্ষর, এবং এটি কল পয়েন্টার. আমি উপর ভিত্তি করে, T এর ভিতরে কি সংরক্ষণ am কোড এই এক লাইন? আমি একটি পাঁচ সংরক্ষণ করছি. বিশেষভাবে অবস্থান যে গুলি ছিল. ব্যবহারকারী হ্যালো টাইপ করা, এবং হয়েছে তাই আপনি যদি প্রথম যে হ্যালো শেষ পর্যন্ত কি হয় এখানে, তারপর সংখ্যা 123 হয় পান থেকে ফিরে আসা যাচ্ছে স্ট্রিং এবং সংরক্ষণ করা হবে - আমরা আগে বলেন - গুলি. এখন আমি অন্য একটি পয়েন্টার ডিক্লেয়ার করার সময় একটি গৃহস্থালি এবং এটি কল টি, নম্বর কি আক্ষরিক মধ্যে শেষ পর্যন্ত যাচ্ছে গল্প অনুযায়ী T? 123 তাই. সুতরাং টেকনিক্যালি এখন গুলি এবং উভয় T সঠিক প্রতি নির্দেশ করা হয় মেমরি একই অংশ. তাই আমি এখন কি করতে যাচ্ছি কি লক্ষ্য এই প্রোগ্রামটি বগী প্রমাণ. সঙ্গে প্রথম আমি দাবি করতে যাচ্ছি একটি মুদ্রণ চ, capitalizing স্ট্রিং এর কপি. তারপর আমি একটু কাজ করতে যাচ্ছি পরীক্ষাতে ত্রুটি. আমি নিশ্চিত করতে যাচ্ছি. চলুন শুরু করা যাক স্ট্রিং T এ নিশ্চিত যে অন্তত দৈর্ঘ্য শূন্য তার চেয়ে অনেক বেশী, তাই কিছু অক্ষর আছে আছে আসলে পুঁজিতে. এবং তারপর আপনি এই প্রত্যাহার হতে পারে পূর্ববর্তী উদাহরণ থেকে. উপরের 2 - যা ctype.h ফাইল. টি বন্ধনী শূন্য আমার সম্পর্কে শূন্য দেয় স্ট্রিং টন অক্ষর. যে একই মান উপরের এবং 2, অবশ্যই, এটি বড়হাতের পরিবর্তিত. তাই intuitively, এই লাইন হাইলাইট প্রথম কোড capitalizing হয় T মধ্যে অক্ষর. কিন্তু এটা intuitively, capitalizing না গণ প্রথম চিঠি. আপনি এগিয়ে চিন্তা করছি কিন্তু যদি, এখন আমি কি am আমি এই প্রোগ্রাম চালানো যখন দেখতে এবং মূল উভয় প্রিন্ট আউট গণ, এবং তথাকথিত কপি, T? তারা আসলে একই হতে যাচ্ছেন. এবং কেন তারা একই হতে যাচ্ছে? তারা ইশারা করছেন উভয় ঠিক একই জিনিস. তাই এই কাজ করতে দিন. কপি শূন্য করুন. এটি ঠিক আছে প্রনয়ন করেছেন. আমার সম্পর্কে কপি শূন্য চালানো যাক. আমাকে হ্যালো ভালো কিছু টাইপ করা যাক সব ছোট হাতের অক্ষর ব্যবহার করে Enter চাপুন. এবং এটা দাবি করে যে আসল গণ উভয় এবং কপি প্রকৃতপক্ষে অভিন্ন. তাই কি সত্যিই এখানে ঘটেছে? আমার সম্পর্কে এই ছবি শুধু পুনরায় আঁকুন যাক একটি গল্প বলা কিছুটা ভিন্ন উপায়. কি সত্যিই নীচে যাচ্ছে আমি ভালো কিছু ডিক্লেয়ার যখন ফণা গৃহস্থালির কাজ শুরু গুলি, বা স্ট্রিং গুলি, আমি একটি পয়েন্টার পেয়ে am - যা চার বাইট হতে হবে এবং CS50 প্রয়োগ এবং কম্পিউটার অনেক. এবং আমি এই গুলি কল যাচ্ছে না. এবং বর্তমানে আছে কিছু অজানা মান. আপনি যদি একটি ভেরিয়েবল ডিক্লেয়ার করা হলে, না হলে, নিজেকে আছে, যারা একটি মান রাখা আছে কি জানেন. এটা কিছু র্যান্ডম অনুক্রম হতে পারে পূর্ববর্তী মৃত্যুদন্ড থেকে বিট. তাই আমি, কোড আমার লাইন পাই যখন স্ট্রিং, এবং তারপর ফিরে সংরক্ষণ গণ মান একরকম স্ট্রিং পেতে - এবং আমরা শেষ পর্যন্ত পেতে কিভাবে ফিরে ছুলা পাবেন স্ট্রিং কাজ, একরকম একটি বরাদ্দ সম্ভবত যে দেখায় অ্যারের এই মত একটি বিট. এইচ ই, L-, L-হে ব্যাকস্ল্যাশ শূন্য. এই ঠিকানায় যে এর অনুমান করা যাক 123 শুধু প্রথম দৃঢ়তা. তাই, স্ট্রিং রিটার্ন পেতে সেখানে লাইন হাইলাইট, এটি ফেরৎ সংখ্যা আমরা 123 বলেন,. তাই কি সত্যিই এখানে s এর ভিতরে যায়? ওয়েল, সত্যিই কি যায় ভিতরে গুলি 123 হয়. কিন্তু সত্যি, আমি একটু পেয়ে করছি এই ঠিকানাগুলির সমস্ত দ্বারা বিভ্রান্ত, এই অবাধ সংখ্যার সব. 123, 124, 127. তাই এর আসলে সহজ করে দেওয়া বিশ্বের একটি সামান্য বিট. আমরা সত্যি, পয়েন্টার সম্পর্কে কথা বলতে, আপনি আমাদের মানুষ, যারা নরক যেখানে বজায় রাখে কিছু স্মৃতি আছে? যে সম্পূর্ণরূপে নির্বিচারে. এটা কিভাবে উপর নির্ভর করে যাচ্ছে অনেক ব্যবহারকারী আছে RAM-র পরিমাণ. এটা যখন দিনের উপর নির্ভর করে যাচ্ছে আপনি সম্ভবত, প্রোগ্রাম চালানো, এবং কি ইনপুট ব্যবহারকারী আপনাকে দেয়. আমরা গুরুত্বহীন বিস্তারিত কায় করছি. সুতরাং let এর বিমূর্ত দূরে এবং বলে যে, আপনি ভালো কোড একটি লাইন চালানো হলে, গৃহস্থালি তারা গুলি ফেরত পায় পান স্ট্রিং এর মান. কেন আমরা পরিবর্তে শুধুমাত্র আমরা কি আঁকা না এটা হিসাবে যদিও একটি পয়েন্টার কলিং রাখা কিছু নির্দেশ করে? তাই আমি যে গণ এখন পর্যন্ত দাবি একটি পয়েন্টার আছে - ফণা নীচে এটি একটি ঠিকানা. কিন্তু এটা শুধু ইশারা এর প্রথম বাইট স্ট্রিং যে ফিরে হয়েছে. আমি এখন এখানে কোড ফিরে আসে তাহলে, কি এই লাইনে যাচ্ছে? ওয়েল, এখন এই হাইলাইট লাইন ইন, আমি দৃশ্যত অন্য ঘোষণা করছি T নামক পরিবর্তনশীল. তবে এটা একটা পয়েন্টার, তাই আমি যাচ্ছি সঠিক, তত্ত্ব, হিসাবে এটি আঁকা একই আকার বাক্স. এবং আমি এটি কল করতে যাচ্ছি. এবং এখন আমরা আবার কোড ফিরে যান, আমি টন গুলি অভ্যন্তরীণ সঞ্চয়, যখন আমি টেকনিক্যালি কি am T ভিতরে নির্বাণ? ভাল টেকনিক্যালি, এই সংখ্যা 123 ছিল. সত্যিই তাই আমি লিখছি করা উচিত সেখানে সংখ্যা 123. কিন্তু এটা উচ্চ স্তরের নিতে. T, এটা শুধু একটা পয়েন্টার যদি, intuitively ঠিক, হয়. হচ্ছে যে সব যে সেখানে সংরক্ষণ করা হয়. তাই এখন শেষ আকর্ষণীয় লাইন কোড, আসলে আমি যেতে যখন শূন্য অক্ষর capitalizing T মধ্যে, কি যাচ্ছে? ওয়েল, T বন্ধনী শূন্য এখন প্রতি নির্দেশ করা হয় আপনি কি চরিত্র, সম্ভবতঃ? এটি জ প্রতি নির্দেশ করে. কারণ T বন্ধনী শূন্য - স্মরণ করছি, এই পুরাতন বাক্য গঠন হয়. T বন্ধনী T, T একটি স্ট্রিং যদি শূন্য শুধু অর্থ বন্ধনী শূন্য শূন্য পাওয়ার মানে যে শক্তি অক্ষর. সত্যিই মানে কি এই অ্যারে যেতে হয় - এবং হ্যাঁ, এই 123 হতে পারে এই 124 হতে পারে. কিন্তু এটি সকল আত্মীয় আছে, মনে রাখবেন. একটি অ্যারে সম্পর্কে কথা যখনই আমরা আছে যে বিষয়ে কথা বলছি এর সুবিধা আপেক্ষিক সূচক. তাই এখন আমরা শুধু অনুমান করতে পারেন যে T বন্ধনী শূন্য জ হয়. আমি এটা 2 উপরের কল যদি তাই হয়, কি যে সত্যিই capitalizing হয় করছেন য়ের বড়হাতের অক্ষর ছোটহাতের এইচ যাও ছোট হাতের অক্ষর ব্যবহার জ তবে অবশ্যই, গুলি কি? এটি একই অভিশাপ স্ট্রিং প্রতি নির্দেশ করে. তাই এই হল ঘটছে হয়েছে যে সব এই কোড পর্যন্ত. সুতরাং সংশ্লেষ তারপর কি? আমরা এই দুটি সমস্যা কিভাবে ঠিক করব? কিভাবে আমরা প্রকৃত স্ট্রিং তুলনা করব? ওয়েল intuitively, কিভাবে হবে আপনি দুই তুলনা সম্পর্কে যান সত্য সমতার জন্য স্ট্রিং? এটা কি মানে যদি দুই স্ট্রিং সমান? স্পষ্টত: না তাদের ঠিকানা হয় একটি কম, কারণ মেমরি সমান স্তর বাস্তবায়নের বিস্তারিত. সমস্ত অক্ষর একই. তাই আমাকে উত্থাপন করা যাক, আমাকে পরিচয় করিয়ে দিতে compare.c সংস্করণ এক এখানে, তাই তুলনা-1.c. আমরা এখনও একটি পেতে যে সম্পর্কে উত্থাপন করা যাক গণ বলা পয়েন্টার, এবং এটা দোকান পান স্ট্রিং এর মান ফিরে. টন সঙ্গে একই জিনিস করতে চলুন শুরু করা যাক. সুতরাং কোড কেউ ভিন্ন. আমি একটু যোগ করতে যাচ্ছি এখন চেক বেশি ত্রুটি. তাই এখন আমরা ফিরে পিলিং সাজানোর যে কি একটি স্ট্রিং এর CS50 মধ্যে এই স্তর আসলে, আমরা আরো পায়ূ হতে হবে এমনটা নিশ্চিত করা সম্পর্কে আমরা অপব্যবহার করবেন না নাল মত অবৈধ মান. তাই আমি ঠিক চেক করতে যাচ্ছি. গণ সমান নাল না এবং T না করা হলে সমান নাল, আমরা ঠিক করছি না. স্ট্রিং পেয়ে আপ যৌনসঙ্গম করা হয়নি করুন হয় যারা স্ট্রিং. এবং আপনি সম্ভবত, এখন অনুমান করতে পারেন কি str CMP সম্ভবতঃ করবেন না? স্ট্রিং তুলনা করুন. আপনি আগে জাভা প্রোগ্রাম করেছি, তাই যদি এই সমান পদ্ধতি ভালো হয় স্ট্রিং বর্গ. কিন্তু যারা আছে আপনি তাদের জন্য আগে প্রোগ্রাম, শুধু এই একটি সি ফাংশন. এটি একটি আসতে হবে ফাইল string.h বলা হয়. এটি ঘোষিত এর যে যেখানে. এবং স্ট্রিং তুলনা করুন - আমি আসলে তার ব্যবহার ভুলে যাওয়া, কিন্তু মন যে না. আমরা কি করতে পারি যে প্রত্যাহার মানুষ, তুলনা ফেটান. এবং এই পর্যন্ত আনা যাচ্ছে লিনাক্স প্রোগ্রামারদের ম্যানুয়াল. এবং এটা সত্যি, একটি সামান্য রহস্যপূর্ণ আছে. কিন্তু আমি হ্যাঁ, যে এখানে দেখতে পারেন. আমি string.h অন্তর্ভুক্ত আছে. এবং এটি ", বিবরণ অধীনে এখানে বলছেন স্ট্রিং তুলনা ফাংশন তুলনা দুই স্ট্রিং S1 এবং S2. "এবং S1 এবং S2 দৃশ্যত দুটি আর্গুমেন্ট ইন পাস আমি সত্যিই মনে রাখবেন না কি const, কিন্তু এখন বিজ্ঞপ্তি - এবং যখন আপনি এই দেখা হয়ে থাকতে পারে আপনি man পৃষ্ঠাগুলি ব্যবহার করেছি যদি আপনি এটি সব আছে - যে গৃহস্থালি তারা শুধু সমার্থক স্ট্রিং সঙ্গে. তাই এটিকে দুটি স্ট্রিং, S1 তুলনা করা এবং S2, এবং এটি কম একটি পূর্ণসংখ্যা ফেরৎ বা সমান বা শূন্য অধিক S1 পাওয়া যায়, যদি যথাক্রমে হতে কম, অথবা মেলে, অথবা S2 তার চেয়ে অনেক বেশী হতে পারে. যে শুধু বলছে খুব জটিল উপায় স্ট্রিং রিটার্ন তুলনা শূন্য দুই স্ট্রিং intuitively যদি জন্য অভিন্ন, চরিত্র অক্ষরের জন্য অক্ষর. এটি একটি ঋণাত্মক সংখ্যা যদি ফেরৎ গুলি, বর্ণানুক্রমে, অনুমিত হয় T আগে আসতে. বা একটি ধনাত্মক সংখ্যা যদি ফেরৎ গণ T পরে আসতে অনুমিত হয় বর্ণানুক্রমে. তাই এই সহজ ফাংশন সঙ্গে পারা আপনি উদাহরণস্বরূপ, এটি একটি বাছাই শব্দের আভা? তাই এই নতুন সংস্করণে, আমি যাচ্ছি এগিয়ে যান এবং compare1 করতে. বিন্দু স্ল্যাশ এক তুলনা করুন. আমি সব ছোট হাতের অক্ষর হ্যালো টাইপ করব. আমি হ্যালো টাইপ করতে যাচ্ছি আবার সব ছোট হাতের মধ্যে. এবং সৌভাগ্যক্রমে এখন এটা বুঝতে আমি একই জিনিস টাইপ. ইতিমধ্যে, আমি যদি নিম্ন মধ্যে হ্যালো টাইপ কেস এবং উপরের ক্ষেত্রে HELLO এবং তাদের তুলনা, আমি টাইপ করা ভিন্ন জিনিস. না শুধুমাত্র কারণ ঠিকানাগুলো ভিন্ন, কিন্তু আমরা তুলনা করছি আবার এবং আবার বিভিন্ন অক্ষর. ওয়েল এর এক যান এবং ফিক্স করা যাক এখন অন্যান্য সমস্যা. আমার সম্পর্কে সংস্করণ এক আপ খুলুন এখন ঠিকানা যা কপি, এই সমস্যা হিসাবে অনুসরণ করে. এবং এই এক চেহারা যাচ্ছে একটু বেশি জটিল. কিন্তু আপনি কি সমস্যা আমার মনে হয় আমরা যদি সমাধানের জন্য প্রয়োজন, আশা করছি এই হতে হবে এখন শুধু একটা মুহূর্ত স্পষ্ট. তাই এই প্রথম লাইন, গৃহস্থালির কাজ শুরু T-মধ্যে layman এর পরিপ্রেক্ষিতে কেউ উত্থাপন করা হতে পারে এই লাইন এখানে এর মানে কি? চর তারা, T করছেন যে কি হয়? গুড. কিছু একটি পয়েন্টার তৈরি করুন মেমরির মধ্যে স্পট. এবং আমাকে এটি একটি সামান্য বিট পরিমার্জন করা যাক. সংরক্ষণ করা হবে এমন একটি ভেরিয়েবল ডিক্লেয়ার মেমরির মধ্যে কিছু গৃহস্থালি ঠিকানা, ঠিক একটু বেশি সঠিক হবে. ঠিক আছে, তাই এখন ডান দিকে, আমি করেছি এই ফাংশন এক দেখেননি আগে, malloc. কিন্তু এর অর্থ কি হতে পারে? মেমরি বরাদ্দকরণ ব্যবস্থা. মেমরি বরাদ্দকরণ ব্যবস্থা. তাই এটা আমরা এখন পর্যন্ত আপ, সক্রিয় আউট সত্যিই একটি শক্তিশালী উপায় ছিল না অপারেটিং সিস্টেম জিজ্ঞাসা, আমাকে কিছু মেমরি দিতে. বরং, এখন আমরা নামক একটি ফাংশন আছে, ঠিক যে যে malloc. এই একটি একটি বিট যদিও ক্ষোভ অধিকার এখন, বিজ্ঞপ্তি যে দুই বন্ধনীর মধ্যে শুধু একটি সংখ্যা হতে যাচ্ছে. আমি প্রশ্ন টাইপ করেছি চিহ্ন একটি সংখ্যা হতে পারে. এবং যে সংখ্যা, মানে আমাকে 10 বাইট দিতে. আমার সম্পর্কে 20 বাইট দিন. আমার সম্পর্কে 100 বাইট দিন. এবং malloc তার যথাসাধ্য চেষ্টা করতে হবে অপারেটিং সিস্টেম জিজ্ঞাসা - এই ক্ষেত্রে লিনাক্স - আরে, তাদের 100 বাইট হয় উপলব্ধ RAM-র? যদি তাই হয়, আমাকে যারা বাইট ফিরে যার ঠিকানা ফিরে সম্ভবত যারা বাইট,? খুব প্রথম এক. তাই এখানে খুব - এবং এই উদীয়মান হয় সি, আপনি যে কোনো সময় ঠিকানার সঙ্গে তার আচরণ? আপনি প্রায় সবসময় সঙ্গে লেনদেন করছেন প্রথম যেমন ঠিকানা, কোন ব্যাপার কিভাবে বড় আপনি হচ্ছে মেমরি একটি খণ্ড তাই কথা বলতে, ফিরে হস্তান্তর. সুতরাং let এর এখানে আকর্ষণীয়. আমি কিভাবে বরাদ্দ চেষ্টা করছি অনেক বাইট, ঠিক? ভাল. S এর স্ট্রিং দৈর্ঘ্য - let এর একটি কংক্রিট উদাহরণ না. গণ হ্যালো হলে, এইচ ই, L-, L-হে কি s এর স্ট্রিং দৈর্ঘ্য, সম্ভবত? সুতরাং এটি পাঁচটি এর. কিন্তু আমি কেন যে একটি প্লাস 1 করছি? কেন আমি ছয় বাইট চান পরিবর্তে পাঁচটি? নাল অক্ষর. আমি এই ছিল বন্ধ ছেড়ে দিতে চান না বিশেষ নাল অক্ষর. কারণ আমি হ্যালো একটি কপি করতে হলে মাত্র এইচ ই, L-, L-হে না, কিন্তু আমি রাখা না যে বিশেষ অক্ষর, কম্পিউটার সুযোগ, একটি ব্যাকস্ল্যাশ দ্বারা, নাও থাকতে পারে আমার জন্য সেখানে জিরো. তাই আমি চিন্তা করার চেষ্টা করছি কপি দৈর্ঘ্য, আমি মনে হতে পারে যে এটা 20 অক্ষর দীর্ঘ, বা একটি মিলিয়ন আমি ঘটতে না হলে দীর্ঘ অক্ষর একটি ব্যাকস্ল্যাশ শূন্য আঘাত. সুতরাং আমরা ছয় বাইট জমা করার প্রয়োজন এইচ ই, L-, L-হে ব্যাকস্ল্যাশ শূন্য. এবং তারপর এই মাত্র সুপার মলদ্বারে হতে পারে. আমি ভুলে যান যে ধরুন কি একটি গৃহস্থালি মাপ হয়. আমরা এটা এক বাইট বলার অপেক্ষা রাখে না রাখা. এবং সাধারণত তা করা হয়. তত্ত্ব, এটা কিছু হতে পারে একটি ভিন্ন Mac বা একটি উপর, বিভিন্ন ভিন্ন পিসি. এই অপারেটর আছে খুঁজে সুতরাং এটি সক্রিয় sizeof বলা হয় যে আপনি এটি পাস হলে একটি ডাটা টাইপ সম্পর্কে নাম যেমন - গৃহস্থালির কাজ, বা কোন int, বা ভাসা - এটা কিভাবে অনেক, পরিবর্তনশীল, আপনাকে বলতে হবে বাইট একটি গৃহস্থালি এই লাগে বিশেষ কম্পিউটার. তাই এই কার্যকরভাবে ঠিক বার 1 বা বলছে এ সব গুণ কিছুই. কিন্তু আমি শুধু সুপার মলদ্বারে হতে করছি শুধু ক্ষেত্রে একটি গৃহস্থালি পৃথক আপনার কম্পিউটারে বনাম খনি, এই পথে গণিত সবসময় চেক আউট করতে যাচ্ছে. অবশেষে, নিচে এখানে আমি নাল জন্য চেক যা সবসময় ভাল অনুশীলন - আবার, আমরা পয়েন্টার সঙ্গে লেনদেন করছেন যে কোন সময়. Malloc দিতে সক্ষম ছিল না যদি আমার সম্পর্কে ছয় byes - যা সম্ভাবনা কম, কিন্তু জাস্ট ইন কেস - অবিলম্বে এক ফিরে. এবং এখন, এগিয়ে যান এবং কপি স্ট্রিং হিসেবে অনুসরণ করে. এবং এই পরিচিত বাক্য গঠন হয় একটি ভিন্ন ভূমিকা যদ্যপি. আমি এগিয়ে যান এবং স্ট্রিং পেতে যাচ্ছি s এর দৈর্ঘ্য এবং N মধ্যে এটি সংরক্ষণ. আমি তখন আমি সমান থেকে বারবার যাচ্ছি , এবং N সহ আপ শূন্য এর চেয়ে বড় বা সমান. প্রতিটি পুনরাবৃত্তির উপর, আমি রাখা যাতে ith মধ্যে s এর ith চরিত্র টন অক্ষর. তাই কি সত্যিই নীচে যাচ্ছে এখানে ফণা? এই যদি, উদাহরণস্বরূপ, গুলি করা হয় - এবং আমি শব্দ এইচ ই, L-, L-হে টাইপ করা আছে এবং একটি ব্যাকস্ল্যাশ শূন্য আছে. এবং আবার, এই গুলি এখানে প্রতি নির্দেশ করা হয়. এবং এখানে এখন T হয়. এবং এই এখন প্রতি নির্দেশ করা হয় মেমরি একটি কপি, ডান? Malloc সম্পর্কে একটি সম্পূর্ণ দেওয়া হয়েছে মেমরি তাল. আমি এর প্রথমে কি না জানি না এই অবস্থানে কোনো. তাই আমি এই মনে করা যাচ্ছে না প্রশ্ন চিহ্ন আভা. কিন্তু যত তাড়াতাড়ি আমি শুরু শূন্য থেকে looping গুলি, T এর দৈর্ঘ্য মাধ্যমে আপ বন্ধনী শূন্য এবং T বন্ধনী 1 - এবং আমি এখন এই রেখে দেব ওভারহেড নেভিগেশন - T বন্ধনী শূন্য এবং গুলি বন্ধনী শূন্য মানে আমি কপি করা যাচ্ছে যে এখানে iteratively জ, ই, L-, L-হে. উপরন্তু আমি প্লাস, কারণ 1, ব্যাকস্ল্যাশ শূন্য. তাই এখন তুলনা-1.c ক্ষেত্রে, শেষ পর্যন্ত আমি প্রিন্ট আউট হলে টন ক্যাপিটালাইজেশন, আমরা উচিত গণ অপরিবর্তিত যে দেখুন. আমাকে এখন এগিয়ে যান এবং এই কাজ করা যাক. সুতরাং copy1 করতে. বিন্দু স্ল্যাশ copy1. আমি হ্যালো, লিখুন টাইপ করতে যাচ্ছি. এবং এখন, শুধুমাত্র কপি বিজ্ঞপ্তি মূলধনী হয়েছে. আমি সত্যিই আছে, কারণ দুই মেমরির অংশ. দুর্ভাগ্যবশত, আপনার কিছু সুন্দর করতে পারেন এখানে খারাপ এবং বিপজ্জনক জিনিষ প্রশংসনীয়. আমাকে এখন এখানে একটি উদাহরণ টান আপ করা যাক, আমাদের যে কয়েকটি উদাহরণ দেয় বিভিন্ন লাইন. তাই শুধু intuitively এখানে, প্রথম লাইন কোড, int-তারা এক্স, ঘোষণা করা হয় এক্স নামক একটি পরিবর্তনশীল. এবং ডাটা টাইপ কি যে পরিবর্তনশীল? যে পরিবর্তনশীল এর ডাটা টাইপ কি? যে cliffhanger ছিল না. ডাটা টাইপ int-এ তারকা. সুতরাং যে কি মানে? এক্স পাবেন কোন int এর ঠিকানা সঞ্চয়. যে হিসাবে সহজ. Y-সঞ্চয় যাচ্ছে কোন int এর ঠিকানা. তৃতীয় লাইনটি কি কোড আছে করছেন? এটি বণ্টন কিভাবে অনেক বাইট, সম্ভবত? চার. কারণ কোন int মাপ হল সাধারণত চার, চার malloc দেয় আমার সম্পর্কে একটি খণ্ড ঠিকানা ব্যাক মেমরি, যার বাইট প্রথম x এর মধ্যে এখন সংরক্ষিত. এখন আমরা দ্রুত সামান্য চলন্ত করছি. তারা এক্স এর মানে কি? এটা যে ঠিকানায় মানে এবং কি আছে নম্বর রাখা? নম্বর আছে 42 বসান. তারা Y Y এ কি যেতে মানে এবং সেখানে সংখ্যা 13 করা. কিন্তু একটি মিনিট অপেক্ষা করুন. মুহূর্তে Y কি? কি ঠিকানা Y সংরক্ষণ করা হয়? আমরা ঠিক আছে, জানি না? আমরা একবার নিয়োগ ব্যবহার করেন নি Y জড়িত অপারেটর. সুতরাং Y হিসেবে দ্বিতীয় লাইন ঘোষণা কোড ঠিক কিছু আবর্জনা মান, একটি বড় প্রশ্ন চিহ্ন তাই কথা বলতে. এটি এলোমেলোভাবে প্রতি নির্দেশ করা যেতে পারে মেমরির মধ্যে কিছু, যা সাধারণত খারাপ. তাই যত তাড়াতাড়ি আমরা সেখানে যে লাইন আঘাত তারা Y, কিছু খারাপ 13 সমান খুব খারাপ কিছু হয় Binky ঘটা. তাই শেষ পর্যন্ত কি দেখতে দিন এই মিনিটে এখানে Binky ঘটছে তাই বা চেহারা. [ভিডিও প্লেব্যাক] -আরে, Binky. নিদ্রা হইতে জাগা আপ. এটা মজা করার জন্য পয়েন্টার সময়. কি যে? পয়েন্টার সম্পর্কে জানুন? ওহ, goodie. -ওয়েল, শুরু করার জন্য, আমি আমরা অনুমান একটি দম্পতি পয়েন্টার প্রয়োজন যাচ্ছি. -ঠিক আছে. এই কোড দুই পয়েন্টার বরাদ্দ যা পূর্ণসংখ্যার নির্দেশ করতে পারেন. -ঠিক আছে, ভাল, আমি দুটি পয়েন্টার দেখতে. কিন্তু তারা হবে বলে মনে হচ্ছে না কিছু নির্দেশ করে. যে অধিকার. প্রাথমিকভাবে, পয়েন্টার না কিছু নির্দেশ. তারা নির্দেশ জিনিষ বলা হয় pointees, এবং তাদের সেট একটি পৃথক ধাপ. -ওহ, ঠিক আছে, ঠিক আছে. আমি যে জানত. pointees আলাদা হয়. সুতরাং কিভাবে আপনি একটি pointee বরাদ্দ না? -ঠিক আছে. ওয়েল, এই কোড একটি নতুন ইন্টিজার বরাদ্দ pointee, এবং এই অংশ x এর সেট এটি নির্দেশ. -আরে, যে ভাল দেখায়. সুতরাং এটা কিছু না. -ঠিক আছে. আমি dereference পয়েন্টার এক্স সঞ্চয় করব তার pointee মধ্যে নম্বর 42. এই কৌতুক জন্য, আমি আমার জাদু করতে হবে dereferencing এর জাদুদণ্ড. Dereferencing অফ তোমার যাদু জাদুদণ্ড? Uh, যে মহান. এই কোড মত দেখাচ্ছে না. আমি শুধু নম্বর সেট আপ, এবং দেব - -আরে, তাকান. সেখানে যায়. সুতরাং x এর অনুসরণ করে একটি dereference করছেন তার pointee অ্যাক্সেস তীর. এই ক্ষেত্রে, সেখানে 42 সঞ্চয়. আরে, নম্বর সংরক্ষণ করতে এটি ব্যবহার করুন অন্য পয়েন্টার মাধ্যমে 13, y এর. -ঠিক আছে. আমি শুধু Y এখানে উপর যান এবং করব সংখ্যা 13 সেট আপ করতে পারেন. এবং তারপর এর জাদুদণ্ড নিতে dereferencing এবং শুধু - থাম! -ওহ, হেই. যে কাজ করে নি. Binky, বলুন, আমি মনে করি না Y dereferencing একটি ভাল ধারণা pointee স্থাপনের কারণ একটি পৃথক ধাপ. এবং আমি মনে করি আমরা কখনও তা মনে করি না. -হুম. বিন্দু ভাল. -হ্যাঁ, আমরা পয়েন্টার Y বরাদ্দ. কিন্তু আমরা এটা সেট না একটি pointee দিকে নির্দেশ করে. -হুম. অত্যন্ত observant. -আরে, আপনি যা খুঁজছেন আছে ভাল, Binky. আপনি Y পয়েন্ট যাতে এটা ঠিক করতে পারবো x এর হিসাবে একই pointee যাও? -শিওর. আমি আমার যাদু জাদুদণ্ড ব্যবহার করব পয়েন্টার নিয়োগ. -যে হতে যাচ্ছে আগে মত সমস্যা? কোন. এই pointees স্পর্শ করে না. এটা ঠিক নির্দেশ এক পয়েন্টার পরিবর্তন অন্য হিসাবে একই জিনিস. -ওহ, আমি দেখতে. X এর হিসাবে একই জায়গায় এখন Y পয়েন্ট. তাই অপেক্ষা করুন. এখনই Y সংশোধন করা হয়েছে. এটি একটি pointee আছে. সুতরাং আপনি জাদুদণ্ড চেষ্টা করতে পারেন আবার dereferencing এর ওভার 13 পাঠাতে. -ঠিক আছে. এখানে যায়. -আরে, যে তাকান. এখনই Y কাজ dereferencing. এবং পয়েন্টার ভাগাভাগি করছেন কারণ যে এক pointee, তারা উভয় 13 দেখুন. -হ্যাঁ. ভাগ করা. যাই হোক না কেন. সুতরাং আমরা এখন জায়গা সুইচ যাচ্ছে? -অহো, তাকান. আমরা সময় ফুরিয়েছে. কিন্তু - -মাত্র তিনটি মনে রাখবেন পয়েন্টার নিয়ম. এক নম্বর, মৌলিক কাঠামো আপনি একটি পয়েন্টার আছে. এবং এটি একটি pointee উপর পয়েন্ট. কিন্তু পয়েন্টার এবং pointee আলাদা হয়. এবং সাধারণ ত্রুটির হয় একটি পয়েন্টার সেট আপ আছে, তবে একটি pointee দেওয়া ভুলবেন. দুই নম্বর, পয়েন্টার dereferencing শুরু পয়েন্টার এবং অনুসরণ করে তার তীর ওভার তার pointee অ্যাক্সেস. আমরা সব জানি, এই শুধুমাত্র কাজ যদি আছে ফিরে যা পায় একটি pointee হয় এক নম্বর বাতিল. নম্বর তিন, পয়েন্টার নিয়োগ লাগে এক পয়েন্টার পরিবর্তন এটা নির্দেশ অন্য পয়েন্টার হিসাবে একই pointee. তাই নিয়োগ পরে, দুই পয়েন্টার পাবেন একই pointee দিকে নির্দেশ করে. কখনও কখনও যে ভাগ করা বলা হচ্ছে. এবং সত্যিই, এটা আছে সব. এখন বিদায় সম্ভাষণ. [END টি ভিডিও প্লেব্যাক] DAVID Malan: পয়েন্টার তাই আরো, Binky আগামী সপ্তাহে আরও. আমরা সোমবার আপনি দেখতে পাবেন.