[সঙ্গীত বাজাচ্ছি] ডগ লয়েড: পয়েন্টার, এখানে আমরা. এটি সম্ভবত যাচ্ছে সবচেয়ে কঠিন বিষয় হতে আমরা CS50 মধ্যে সম্পর্কে যে কথা বলা. এবং আপনি পড়তে থাকেন তাহলে পয়েন্টার সম্পর্কে কিছু আপনি একটি সামান্য বিট হতে পারে আগে ভয় দেখিয়ে এই ভিডিওতে যাচ্ছে. এটা পয়েন্টার সত্য আপনি ক্ষমতা অনুমতি না সম্ভবত স্ক্রু আপ বেশ খারাপভাবে আপনি যখন ভেরিয়েবল, এবং তথ্য দিয়ে কাজ, এবং আপনার প্রোগ্রাম বিপর্যস্ত হবে যার ফলে. কিন্তু তারা আসলে সত্যিই দরকারী আছেন এবং তারা আমাদের সত্যিই একটি দুর্দান্ত উপায় অনুমতি ফিরে ডাটা পাস এবং ঘোষণা ফাংশন মধ্যে, যে আমরা অন্যথায় করতে অসমর্থ হন. আর তাই আমরা কি সত্যিই ট্রেন এখানে কাজ করতে চান আপনি ভাল পয়েন্টার শৃঙ্খলা আছে, তাই করার আপনি কার্যকরভাবে পয়েন্টার ব্যবহার করতে পারেন আপনার প্রোগ্রাম যে অনেক ভালো করতে. আমি আগেই বলেছি পয়েন্টার আমাদের একটি ভিন্ন দিতে পথ ফাংশন মধ্যে তথ্য প্রেরণ করতে. এখন আপনার কাছ থেকে প্রত্যাহার হলে তার আগে একটি ভিডিও, যখন আমরা যে বিষয়ে কথা বলছি পরিবর্তনশীল সুযোগ, আমি উল্লেখ যে আমরা মধ্যে পাস যে সব তথ্য সি ইন ফাংশান উপস্থিত মান দ্বারা প্রেরণ করা হয়. আর আমি যে ব্যবহৃত হতে পারে না বরং শব্দটি আমি সেখানে বোঝানো, কি আমরা তথ্য কপি ক্ষণস্থায়ী যে ছিল. আমরা একটি ফাংশন যে আপনি একটি পরিবর্তনশীল পাস করার সময়, আমরা আসলে পরিবর্তনশীল পাশ করছি না ফাংশন, ডান? আমরা একটি কপি পার করছি ফাংশন যে তথ্য. ফাংশন কি এটা করবে না এবং এটা কিছু মান হিসাব, এবং হয়তো আমরা যে মান ব্যবহার এটা ফেরত দেয় যখন. একটি ব্যতিক্রম ছিল মান পাশ এই নিয়ম, এবং আমরা কি যে ফিরে আসবো এই ভিডিওতে একটু পরে হয়. আমরা পরিবর্তে পয়েন্টার ব্যবহার করা হলে ভেরিয়েবল ব্যবহার করে, বা ভেরিয়েবল ব্যবহার পরিবর্তে নিজেদের বা ভেরিয়েবল কপি, আমরা এখন প্রায় ভেরিয়েবল প্রেরণ করতে পারেন অন্যভাবে ফাংশন মধ্যে. এই আমরা করতে হলে এর মানে হল যে এক ফাংশন একটি পরিবর্তন, যে পরিবর্তন আসলে নিতে হবে একটি ভিন্ন ফাংশন প্রভাবিত. আবার, এই কিছু হয় যে আমরা পূর্বে যা পারে নি এবং আপনি কি অদলবদল করার চেষ্টা করেছি একটি ফাংশন দুটি ভেরিয়েবল এর মান, আপনি এই সমস্যা লক্ষ্য করেছি আপ লতানে সাজানোর, ডান? আমরা X এবং Y, এবং আমরা অদলবদল করতে চান তাহলে swap 'নামক একটি ফাংশন তাদের পাস, ফাংশনের ভিতর অদলবদল ভেরিয়েবল বিনিময় মান না. এক দুই হয়ে, দুটি হয়ে এক, কিন্তু আমরা আসলে না মূল মধ্যে কিছু পরিবর্তন ফাংশন, কলার মধ্যে. কারণ আমরা করতে পারেন না, আমরা করছি শুধুমাত্র তাদের কপি সঙ্গে কাজ. যদিও পয়েন্টার দিয়ে, আমরা যা করতে পারেন আসলে একটি ফাংশন এবং X ও Y পাস. যে ফাংশন করতে পারেন তাদের সঙ্গে কিছু. এবং যারা ভেরিয়েবল মান আসলে পরিবর্তন করতে পারেন. সুতরাং যে বেশ একটি পরিবর্তন তথ্য দিয়ে কাজ করার জন্য আমাদের ক্ষমতা. আমরা সেটাতে যাওয়ার আগে পয়েন্টার, আমি এটা মনে করি কয়েক মিনিট গ্রহণ এখানে বুনিয়াদি ফিরে যেতে. আর কিভাবে কটাক্ষপাত আছে কম্পিউটার মেমরি কাজ এই দুটি বিষয় যাচ্ছি কারণ আসলে বেশ পারস্পরিক হতে. আপনি সম্ভবত জানেন, আপনার কম্পিউটার সিস্টেমের উপর আপনি একটি হার্ড ড্রাইভ আছে বা সম্ভবত একটি সলিড স্টেট ড্রাইভ, ফাইল স্টোরেজ পাঁচ কিছু বাছাই. এটা কোথাও সাধারণত 250 গিগাবাইট এর আশপাশ এখন টেরাবাইট হয়তো একটি দম্পতি. আর তা হচ্ছে, যেখানে সব আপনার ফাইল শেষ পর্যন্ত, বাস আপনার কম্পিউটার শাট হয়, এমনকি যখন বন্ধ, আপনি কি এটা আবার চালু করতে পারেন এবং আপনি আপনার ফাইল আছে পাবেন আবার আপনি আপনার সিস্টেম পুনরায় বুট করার সময়. কিন্তু একটি হার্ড ডিস্ক ড্রাইভের মত ডিস্ক ড্রাইভ, একটি HDD, বা একটি সলিড স্টেট ড্রাইভ, একটি এসএসডি, শুধু স্টোরেজ স্পেস হয়. আমরা আসলে সাথে কিছু করতে পারবেন না হার্ড ডিস্ক এ যে তথ্য, বা সলিড স্টেট ড্রাইভ এ. আসলে পরিবর্তন করার জন্য তথ্য বা এটি প্রায় সরানো, আমরা এটা স্থানান্তর করতে হবে র্যাম, অবাধ প্রবেশ স্মৃতি. এখন র্যাম, আপনি অনেক আছে আপনার কম্পিউটার এ কম. আপনি কোথাও থাকতে পারে 512 মেগাবাইটের আশপাশ আপনি যদি কোনো পুরোনো কম্পিউটার আছে, হয়তো দুই, চার, আট, 16, সম্ভবত এমনকি সামান্য আরো, উপস্থিত RAM- র গিগাবাইট. সুতরাং যে অনেক ছোট, কিন্তু যে যেখানে উদ্বায়ী তথ্য সব বিদ্যমান. আমরা কিছু পরিবর্তন করতে পারেন যে যেখানে. কিন্তু আমরা আমাদের কম্পিউটার বরখাস্ত করা হলে, উপস্থিত RAM- র মধ্যে তথ্য সব ধ্বংস হয়. আমরা হার্ড ডিস্ক আছে প্রয়োজন সুতরাং যে কেন এটা আরো স্থায়ী অবস্থান, এটা exists- যাতে এটা would সত্যিই খারাপ হতে যদি প্রত্যেক সময় আমরা আমাদের কম্পিউটার বন্ধ পরিণত ভাষার আমাদের সিস্টেমে ফাইল ধ্বংস হয়েছিল. সুতরাং আমরা RAM- র ভিতর কাজ. এবং প্রত্যেক সময় আমরা যে বিষয়ে কথা বলছি মেমরি, প্রায় কাছাকাছি, CS50 মধ্যে, আমরা র্যাম, না হার্ড ডিস্ক বিষয়ে কথা বলছি. সুতরাং আমরা মেমরিতে জিনিষ সরানো যখন, এটা স্থান একটি নির্দিষ্ট পরিমাণ পর্যন্ত সময় লাগে. তথ্য ধরনের সব যে আমরা সঙ্গে কাজ করছি আপ বিভিন্ন নেওয়া উপস্থিত RAM- র মধ্যে স্থান পরিমাণে. তাই প্রত্যেক সময় আপনি একটি পূর্ণসংখ্যা তৈরি মেমরি পরিবর্তনশীল, চার বাইট আপনি যাতে উপস্থিত RAM- র মধ্যে সেট করা হয় একপাশে যে পূর্ণসংখ্যা সঙ্গে কাজ করতে পারেন. আপনি পূর্ণসংখ্যা ডিক্লেয়ার করতে পারেন, এটা পরিবর্তন, তা নির্ধারণ করুন মান বৃদ্ধি একটি মান 10 এক, তাই এবং তাই করে. এ যে ঘটতে প্রয়োজন সকল উপস্থিত RAM- র, এবং আপনি চার বাইট পেতে ভাষার সঙ্গে কাজ করার আপনার তৈরি করা পূর্ণসংখ্যা. প্রত্যেক অক্ষর আপনি তৈরি এক বাইট পায়. যে স্থান ঠিক কত কী একটি অক্ষর ধারণ করার প্রয়োজন. প্রতিটি ভাসা, একটি বাস্তব সংখ্যা, চার বাইট পায় এটি একটি ডবল যদি না স্পষ্টতা ফ্লোটিং পয়েন্ট যার সাহায্যে আপনি সংখ্যা, আরো সুনির্দিষ্ট বা তার বেশি সংখ্যার আছে দশমিক বিন্দু পরে স্পষ্টতা হারানো ছাড়া, যা মেমরির আট বাইট লাগতে. দীর্ঘ longs, সত্যিই বড় ইন্টিজার, স্মরণশক্তির আট বাইট লাগতে. কত মেমরি বাইট স্ট্রিং লাগতে না? ওয়েল এর যে প্রশ্নে একটি পিন করা যাক এখন জন্য, কিন্তু আমরা তা ফিরে আসবো. তাই ফিরে মেমরি এই ধারণা হিসাবে বাইট আকারের কোষের একটি বড় অ্যারে. যে সত্যিই এটা হয় সব, এটা কোষের শুধু একটি বিশাল অ্যারে, শুধু অন্য কোন অ্যারের মত যে আপনার সাথে পরিচিত হন এবং দেখুন, প্রতিটি উপাদান ছাড়া এক বাইট চওড়া. এবং শুধু একটি অ্যারের মত, প্রতিটি উপাদান একটি ঠিকানা আছে. একটি অ্যারের প্রতিটি উপাদান একটি সূচক, এবং আমরা আছে তথাকথিত করতে যে সূচক ব্যবহার করতে পারেন শৃঙ্খলার র্যান্ডম এক্সেস. আমরা এ শুরু করতে হবে না অ্যারের শুরুতে, ভাষার মাধ্যমে বারবার একক উপাদান উহার আমরা যা খুঁজছেন তা খুঁজে পেতে. আমরা শুধু আমি পেতে চান, বলতে পারেন 15 উপাদান বা 100th উপাদান. এবং আপনি ঠিক যে সংখ্যা প্রেরণ করতে পারেন এবং আপনি যা খুঁজছেন মূল্য পেতে. একইভাবে প্রতি পাঁচ যা মেমরির মধ্যে একটি ঠিকানা আছে. তাই আপনার মেমরি পারে ভালো কিছু দেখবে. এখানে একটি খুব ছোট খণ্ড মেমরি, এই মেমরি 20 বাইট. প্রথম 20 বাইট কারণ আমার নীচে আছে ঠিকানাগুলি 3, 2, 1, 0, এবং তাই 19 পর্যন্ত সব পথে. আর আমি ভেরিয়েবল ডিক্লেয়ার যখন আমি তাদের সঙ্গে কাজ শুরু হলে, সিস্টেম স্থাপন করতে যাচ্ছে আমার জন্য সরাইয়া কিছু স্থান এই মেমরি কাজ করতে আমার ভেরিয়েবল সঙ্গে. তাই আমি গৃহস্থালি সি মূলধন সমান বলতে পারে, এইচ আর কি ঘটতে যাচ্ছে? ওয়েল সিস্টেম যাচ্ছে আমার এক বাইট জন্য সেট একপাশে. এই ক্ষেত্রে এটি বাইট নম্বর নেওয়া হয়েছে চার, অঙ্ক চার বাইট, এবং এটি সংরক্ষণ করে যাচ্ছে আমার জন্য সেখানে চিঠি মূলধন এইচ. আমি তখন কোন int গতি যদি বলি সীমা এটা, 65 সমান সরাইয়া থেকে চার যাচ্ছে আমার জন্য মেমরি বাইট. এবং সেই আচরণ যাচ্ছে একটি একক ইউনিট হিসেবে চার বাইট আমরা কাজ করছি কি কারণ সঙ্গে এখানে একটি পূর্ণসংখ্যা. এবং এটা আছে 65 সংরক্ষণ করে যাচ্ছে. এখন থেকেই আমি ধরনের আছি আপনি একটি মিথ্যা একটি বিট বলছে, ঠিক আছে, আমরা জানি যে কারণ কম্পিউটার বাইনারি কাজ. তারা বুঝতে পারে না অগত্যা একটি মূলধন এইচ কি বা 65 তারা শুধুমাত্র, কি বাইনারি, zeros এবং বেশী বুঝতে. তাই আসলে কি আমরা সেখানে সংরক্ষণ করছেন অক্ষর এইচ সংখ্যা 65, নয় বরং বাইনারি উপস্থাপনা উহার যা চেহারা একটি এই মত সামান্য কিছু. আর বিশেষ পূর্ণসংখ্যা পরিবর্তনশীল প্রেক্ষাপটে, এটা ঠিক তা থুতু যাচ্ছে না এটা এক চার হিসেবে বিবেচনা করা যাচ্ছে না বাইট খণ্ড অগত্যা এটা আসলে যাচ্ছে চার এক বাইট অংশ হিসেবে বিবেচনা করা, যা ভালো কিছু চেহারা হতে পারে. এবং এমনকি এই নয় সম্পূর্ণরূপে সত্য হয়, কিছু বলা, কারণ আমরা পারব না, যা একটি endianness, এখন ঢোকা যাচ্ছে কিন্তু আপনার সম্পর্কে জানতে আগ্রহী, আপনি একটু উপর পড়তে পারে এবং বড় endianness. কিন্তু এই তর্কের খাতিরে, এই ভিডিওটি অনুরোধে জন্য, এর ঠিক যে, হয় অনুমান করা যাক আসলে, কিভাবে সংখ্যা 65 would প্রতিনিধিত্ব করা প্রতি সিস্টেমে মেমরি, এটা সম্পূর্ণরূপে সত্য নয়, যদিও. কিন্তু এর আসলে ঠিক করতে দেওয়া সম্পূর্ণরূপে সব বাইনারি পরিত্রাণ, এবং মাত্র এইচ হিসেবে আমার মনে হয় এবং 65, এটা অনেক সহজ মত এটা সম্পর্কে চিন্তা করা একটি মানুষের হিসাবে যে. ঠিক আছে, এটা মনে হয় তাই হয়তো একটি একটু র্যান্ডম যে I've- আমার সিস্টেম বাইট 5, 6, 7 আমাকে দিতে হবে না, এবং 8 পূর্ণসংখ্যা সংরক্ষণ করতে. যে জন্য একটি কারণ, খুব, আছে যা আমরা এই মুহূর্তে ঢোকা কিন্তু যথেষ্ট হবে না এটা যে কি বলতে কম্পিউটার এখানে করছে সম্ভবত তার পক্ষ থেকে একটি ভাল পদক্ষেপ. আমার যে মেমরি দিতে না অগত্যা ফিরে যাও. এটা এখন এটা করতে যাচ্ছে যদিও আমি অন্য স্ট্রিং পেতে চান তাহলে, উপাধি বলা হয়, এবং আমি চাই সেখানে লয়েড করা. আমি এক মাপসই প্রয়োজন যাচ্ছি চরিত্র, যে প্রতিটি চিঠি এক প্রয়োজন যাচ্ছে চরিত্র, মেমরি এক বাইট. আমি আমার অ্যারের মধ্যে লয়েড লাগাতে পারে, তাই যদি ভালো আমি সঠিক, যেতে বেশ ভাল আছি? কি অনুপস্থিত? ভাষার স্ট্রিং আমরা কাজ করে মনে রাখবেন গ ব্যাকস্ল্যাশ শূন্য দিয়ে শেষ হয় এ নিয়ে, এবং আমরা হয়, এখানে যে বর্জন না করতে পারেন. আমরা একপাশে এক বাইট সেট প্রয়োজন মেমরি তাই আমরা যে রাখা আমাদের স্ট্রিং শেষ হয়েছে যখন জানেন. তাই আবার এই ব্যবস্থা উপায় জিনিস মেমরি যথাসাধ্য প্রদর্শিত একটু র্যান্ডম হতে কিন্তু এটা আসলে কিভাবে হয় সবচেয়ে সিস্টেম ডিজাইন করা হয়. গুণিতক তাদের রেখায় আপ চার, কারণে আবার আমরা প্রয়োজন হবে না যে এই মুহূর্তে ঢোকা. কিন্তু এই এত যে এটা বলার জন্য যথেষ্ট কোড এই তিনটি লাইন পরে, এই স্মৃতি মত চেহারা হতে পারে কি. আমি মেমরি অবস্থানে প্রয়োজন হলে 4, 8, এবং 12, আমার তথ্য রাখা এই আমার স্মৃতি মত চেহারা হতে পারে কি. আর শুধু বিশেষ হতে এখানে, যখন গোঁড়া আমরা মেমরি বিষয়ে কথা বলছি ঠিকানা সাধারণত আমরা তাই হেক্সাডেসিমেল স্বরলিপি ব্যবহার করতে. তাই কেন আমরা এই সব রূপান্তর না হেক্সাডেসিমেল স্বরলিপি দশমিক থেকে শুধু যে সাধারণত কারণ কীভাবে আমরা মেমরি পড়ুন. সুতরাং পরিবর্তে মাধ্যমে 0 হচ্ছে 19, যা আছে তা হল শূন্য শূন্য X1 তিনটি মাধ্যমে X শূন্য. যারা মেমরি 20 বাইট হয় আমরা বা আমরা এই ছবিতে এ খুঁজছেন আছে এখানেই. সুতরাং যে বলেন হচ্ছে সব, এর দিন একটি দ্বিতীয় জন্য মেমরি থেকে সরে এবং ফিরে পয়েন্টার. এখানে সবচেয়ে গুরুত্বপূর্ণ বিষয় মনে রাখতে হবে আমরা পয়েন্টার সাথে কাজ শুরু করেন. একটি পয়েন্টার কিছুই নয় একটি ঠিকানা বেশী. আমি আবার, কারণ এটা বলবো এটা খুবই গুরুত্বপূর্ণ যে একটি পয়েন্টার কিছুই নয় একটি ঠিকানা বেশী. পয়েন্টার অবস্থানে ঠিকানাগুলো যা মেমরির মধ্যে ভেরিয়েবল যেখানে বসবাস. এটা আশা হয়ে যে জানা সহজ সামান্য বিট তাদের সঙ্গে কাজ করতে. আমি চাই আরেকটি বিষয় করতে সাজান আছে দৃশ্যত কি প্রতিনিধিত্বমূলক ডায়াগ্রামে কোড বিভিন্ন লাইনের সঙ্গে ঘটছে. এবং আমরা এই একটি দম্পতি করতে হবে পয়েন্টার মধ্যে সময়ের, এবং আমরা গতিশীল সম্পর্কে কথা বলতে হলে মেমরি বরাদ্দ হিসাবে ভাল. আমি এই চিত্র মনে করেন যে কারণ বিশেষ সহায়ক হতে পারে. আমি উদাহরণস্বরূপ বলতে যদি তাই হয়, কোন int ট আমার কোড, কি ঘটছে? ভাল মূলত কি ঘটছে আমি আমার জন্য সরাইয়া সেট স্মৃতি পেয়ে করছি কিন্তু আমি এমনকি পছন্দ করি না আমি যে ভালো এটা আমার মনে হয় একটি বাক্স মত এটা সম্পর্কে ভাবতে চাই. আমি একটি বক্স আছে এবং এটি রঙ্গিন সবুজ আমি কারণ সবুজ বাক্সে পূর্ণসংখ্যার লাগাতে পারেন. এটি একটি অক্ষর আমি যদি একটি নীল বাক্সে থাকতে পারে. আমি তৈরি করছি কিন্তু যদি আমি সবসময় বলে পূর্ণসংখ্যার ধরে রাখতে পারেন যে একটি বক্স যে বাক্সে সবুজ রঙ্গিন হয়. আর আমি একটি স্থায়ী মার্কারের নিতে এবং আমি এটা পাশ দিয়ে k লিখতে. তাই আমি, K নামক একটি বক্স আছে যার মধ্যে আমি পূর্ণসংখ্যার লাগাতে পারেন. আমি int K বলে যখন, যে কি আমার মাথা হতে থাকে. আমি কে পাঁচটি সমান বলে থাকেন, আমি কি করছি? ওয়েল, আমি পাঁচটি নির্বাণ করছি বক্সে, ঠিক আছে. এই যদি, বেশ সহজবোধ্য আমি int ট, ট নামক একটি বক্স তৈরি বলে. তাহলে আমি কে 5 সমান বলে বক্সের মধ্যে পাঁচটি করা. আশা করছি যে একটি লীপ অত্যধিক নয়. কিছু একটা হয়ে যেতে এখানে যেখানে যদিও আকর্ষণীয় সামান্য. আমি int * PK যদি বলি, আমি ভাল না, এমনকি যদি এই অগত্যা মানে কি জানেন, এটা স্পষ্ট কিছু পেয়েছিলাম একটি পূর্ণসংখ্যা সঙ্গে কাজ করতে. তাই আমি রং যাচ্ছি সবুজ পর এই বক্স, আমি এটা কিছু পেয়েছিলাম জানেন একটি পূর্ণসংখ্যা সঙ্গে কাজ করতে, কিন্তু এটি একটি পূর্ণসংখ্যা নিজেই না, এটা কোন int তারকা কারণ. কিছু সামান্য আছে এটি সম্পর্কে বিভিন্ন. সুতরাং একটি পূর্ণসংখ্যা জড়িত, কিন্তু অন্যথায় এটা থেকে খুব ভিন্ন নয় আমরা কি বিষয়ে কথা হয়েছে. এটি একটি বক্স, তার একটি ট্যাগ পেয়েছিলাম এটি একটি ট্যাগ PK পরা, এবং তা ধারণ করতে সক্ষম ঐ যাই হোক না কেন কোন int তারার মতো. তারা কি কিছু আছে পূর্ণসংখ্যার স্পষ্টতর. এখানে শেষ লাইন যদিও এর. যদি আমি বলি PK = & K, দাঁড়ান, কি ঠিক ঠিক, ঘটেছে? সুতরাং এই র্যান্ডম সংখ্যা, আপাতদৃষ্টিতে র্যান্ডম সংখ্যা, সেখানে বক্সে ফেলে দেওয়া হয়. যে সকল, PK হয় K এর অঙ্ক পায়. K মেমরির মধ্যে বসবাস যেখানে তাই আমি স্টিকিং করছি, তার ঠিকানা, তার বাইট এর ঠিকানা. আমি করছি সব আমি বলার অপেক্ষা রাখে না হয় যে মূল্য আমি যাচ্ছি কি আমার বক্স বলা PK ভেতরে রাখা. আর এই জিনিস কারণ পয়েন্টার, এবং খুঁজছেন কারণ শূন্য X মত একটি পংক্তি এ আট শূন্য সি সাত আট চার দুটি শূন্য সম্ভবত খুব অর্থপূর্ণ না. আমরা সাধারণত পয়েন্টার ঠাহর যখন, আমরা আসলে পয়েন্টার দিয়ে যাচ্ছেন. PK আমাদের তথ্য দেয় আমরা যা মেমরির মধ্যে K খুঁজে পাওয়া প্রয়োজন. তাই মূলত PK এটা একটি তীর আছে. আর আমরা দৈর্ঘ্য হেটে যদি যে তীর, কল্পনা আপনার হাঁটিতে পারে এমন কিছু, আমরা যদি তীর দৈর্ঘ্য বরাবর হেটে, যে তীর খুব ডগা, আমরা স্মৃতিতে পাঁচ পাবেন যেখানে K বসবাস. এবং যে সত্যিই গুরুত্বপূর্ণ K বসবাস যেখানে আমরা জানি একবার কারণ, আমরা তথ্য দিয়ে কাজ শুরু করতে পারেন যে মেমরি পাঁচ ভেতরে. আমরা একটি পুঁচকে পেয়ে থাকেন যদিও এখন এগিয়ে নিজেদেরকে বিট. সুতরাং একটি পয়েন্টার কি? একটি পয়েন্টার যার একটি উপাত্তের হয় মূল্য একটি মেমরি ঠিকানা. যে ছিল শূন্য X আট শূন্য কাপড় যে যাওয়া, যে একটি মেমরি ঠিকানা ছিল. মেমরি যে একটি অবস্থান ছিল. এবং একটি পয়েন্টার টাইপ ধরণের বর্ণনা তথ্য আপনি এ পাবেন যে মেমরি ঠিকানা. সুতরাং কোন int তারকা অংশ ঠিক আছে. আমি যে তীর অনুসরণ করে, এটা একটি অবস্থান সম্পর্কে নেতৃত্ব যাচ্ছে. এবং যে অবস্থান, তা আমি আমার যেমন আপনি সেখানে দেখতে পাবেন, একটি সবুজ রঙের বাক্স. এটা যে কি, একটি পূর্ণসংখ্যা আমি আমি যে ঠিকানায় যান তাহলে পাবেন. একটি ডাটা টাইপ পয়েন্টার কি বর্ণনা আপনি যে মেমরি ঠিকানায় পাবেন. তাই এখানে যদিও সত্যিই শীতল জিনিস. পয়েন্টার আমাদের পাস করার অনুমতি ফাংশন মধ্যে ভেরিয়েবল. এবং আসলে ভেরিয়েবল পাস এবং তাদের কপি পাস না. আমরা জানি কারণ যদি ঠিক যেখানে মেমরি একটি পরিবর্তনশীল এটি, আমরা একটি কপি করতে হবে না এটা, আমরা শুধু যে পাঁচ যেতে পারেন এবং যে পরিবর্তনশীল সঙ্গে কাজ. সারাংশ পয়েন্টার তাই সাজান একটি কম্পিউটার পরিবেশের করতে আরো অনেক বাস্তব বিশ্বের মত, ঠিক আছে. তাই এখানে একটি উপমা এর. আমি একটা নোটবুক আছে যে বলা যাক, ঠিক আছে, এবং এটা নোট পূর্ণ. আমি তোমাদের কাছে এর আপডেট চাই. আপনি একটি ফাংশন আছে আপডেট নোট, ঠিক আছে. উপায় আমরা চলেছি এ পর্যন্ত কাজ, কি আপনি আমার নোটবুক নিতে হবে কি হয়, আপনি, কপি দোকান থেকে যাবেন আপনি একটি জেরক্স কপি করতে হবে নোটবুক প্রতিটি পৃষ্ঠায়. আপনি ফিরে আমার নোটবুক ছেড়ে দেব আমার ডেস্কের উপর যখন আপনি কাজ করছেন, আপনি যান এবং অনেক কিছু ক্রুশ আউট করব আমার তারিখ বা ভুল বাইরে নোটবুক, এবং তারপর ফিরে পাস করব আমার জেরক্স পেজের স্ট্যাক যে আমার নোটবুক একটি প্রতিরূপ সঙ্গে হয় আপনি এটা করতে তৈরি করেছি যে পরিবর্তন. এবং যে সময়ে, এটা যেমন আমার উপর কলিং ফাংশন, কলার যেমন, আপনার নোট গ্রহণ করার সিদ্ধান্ত নেন এবং আমার নোটবুক সেগুলি ফিরে সংহত. সেজন্য পদক্ষেপ অনেক আছে এখানে জড়িত, ঠিক আছে. ভালো লেগেছে এটা ভালো হবে না আমি শুধু বলি, আরে, আপনি যা করতে পারেন আমার নোটবুক আপডেট আমার, আপনি আমার নোটবুক হাতে এবং আপনি জিনিষ নিতে এবং আক্ষরিক তাদের ক্রুশ আউট এবং আমার নোটবুক আমার নোট আপডেট করুন. এবং তারপর আমার নোটবুক ফেরত দিতে. যে ধরনের কি পয়েন্টার, আমাদের কাজ করার অনুমতি দেয় তারা এই পরিবেশে অনেক করতে আমরা বাস্তবে কিভাবে অপারেট মত আরো. যাতে ঠিক কি একটি পয়েন্টার, এর কথা বলা যাক হয় পয়েন্টার সি কাজ, এবং কিভাবে সম্পর্কে কিভাবে আমরা তাদের সঙ্গে কাজ শুরু করতে পারেন. তাই এটি একটি খুব সহজ পয়েন্টার আছে সি নামক নাল পয়েন্টার. কিছুই করার নাল পয়েন্টার পয়েন্ট. এটা ভালো এটি সম্ভবত মনে আসলে না খুব দরকারী জিনিস, কিন্তু আমরা একটি ছবি দেখতে পাবেন পরবর্তী সামান্য, আসলে এই নাল পয়েন্টার বিদ্যমান যে আসলে সত্যিই উপকারে আসতে পারে. এবং যদি আপনি একটি পয়েন্টার তৈরি যখনই এবং আপনি তার মূল্য immediately- সেট না সেটিং একটি উদাহরণ তার মান অবিলম্বে একজন দম্পতি ফিরে স্লাইড হবে আমি PK & K সমান বলেন যেখানে PK হিসাবে, K এর ঠিকানা পায় আমরা, এর মানে হল যে কি দেখতে পাবেন আমরা যে কোড কিভাবে দেখতে পাবেন shortly- আমরা কিছু করতে তার মান সেট না থাকে তাহলে অবিলম্বে অর্থপূর্ণ, আপনি সবসময় উচিত নাল নির্দেশ আপনার পয়েন্টার সেট. আপনি এটা কিছুই করার নির্দেশ সেট করা উচিত. যে এর চেয়ে খুব আলাদা হিসাবে এটা শুধু মান যাব এবং তারপর একটি ঘোষণা পয়েন্টার এবং শুধু অভিমানী যে খুব কমই সত্য কারণ এটা নাল. তাই আপনি সর্বদা সেট করা উচিত একটি পয়েন্টার মান আপনি তার মূল্য নির্ধারণ করে না থাকে তাহলে নাল অবিলম্বে কিছু অর্থপূর্ণ করার. আপনি না পরীক্ষা করতে পারবেন একটি পয়েন্টার এর মান কিনা সমতা অপারেটর ব্যবহার নাল (==), আপনি কোন পূর্ণসংখ্যা তুলনা পছন্দ মান বা চরিত্র মান ব্যবহার (==) আরো. এটা ধ্রুব একটি বিশেষ ধরণের আপনি পরীক্ষা করতে ব্যবহার করতে পারেন যে মান. সুতরাং যে একটি খুব সহজ ছিল পয়েন্টার, নাল পয়েন্টার. আরেকটি উপায় তৈরি করতে একটি পয়েন্টার নিষ্কাশন করা হয় একটি পরিবর্তনশীল এর ঠিকানা আপনি ইতিমধ্যে তৈরি করেছি, এবং আপনি ও এই ব্যবহার করতে অপারেটর অঙ্ক নিষ্কাশন. যা ইতিমধ্যেই আমরা পূর্বে দেখা করেছি প্রথম চিত্রটি উদাহরণে আমি দেখিয়েছি. X আমরা করেছি যে একটি পরিবর্তনশীল যদি তাই ইতিমধ্যে টাইপ পূর্ণসংখ্যা নির্মিত, তারপর ও এক্স একটি পূর্ণসংখ্যা একটি পয়েন্টার. & এক্স যা-, ও নিষ্কাশন যাচ্ছে মনে ডানদিকে জিনিস অঙ্ক. এবং একটি পয়েন্টার শুধু একটি ঠিকানা থেকে, তুলনায় & এক্স একটি পূর্ণসংখ্যা একটি পয়েন্টার যার মূল্য যেখানে মেমরি X জীবনে হয়. এটা X এর ঠিকানা. সুতরাং & এক্স এক্স এর ঠিকানা. এর এই এক পদক্ষেপ গ্রহণ করা আরও কিছু সাথে সংযোগ আমি একটি পূর্বে ভিডিওতে উল্লিখিত. আপনার কীবোর্ড দ্বিগুণ একটি অ্যারের হয়, তাহলে & তীর বর্গাকার বন্ধনী আমি একটি পয়েন্টার একটি ডবল. ঠিক আছে. আমি যদি বর্গাকার বন্ধনী arr আগমন, টেনিস একটি অ্যারে তারপর আমি হয় বর্গাকার বন্ধনী arr যে অ্যারের আমি-তম উপাদান, এবং ও বর্গাকার বন্ধনী arr আমি কোথায় হয় মেমরি তীর এর I- তম উপাদান বিদ্যমান. তাই সংশ্লেষ এখানে কি? একটি অ্যারে নাম, সংশ্লেষ এই গোটা ব্যাপারটাই, একটি অ্যারে এর নাম হয় আসলে নিজেই একটি পয়েন্টার. আপনি কাজ করে থাকেন সব বরাবর পয়েন্টার সাথে আপনি একটি অ্যারের ব্যবহার করেছি যে প্রতি সময়. উদাহরণ থেকে মনে রেখো পরিবর্তনশীল সুযোগ উপর, আমি উপস্থাপন ভিডিওর শেষে কাছাকাছি আমরা একটি ফাংশন আছে যেখানে একটি উদাহরণ বলা সেট int এবং একটি ফাংশন সেট অ্যারে বলা. এবং আপনার চ্যালেঞ্জ নির্ধারণ কিনা বা না, বা কি আমরা প্রিন্ট আউট যে মান ফাংশন শেষে, প্রধান প্রোগ্রাম শেষে. আপনি যে উদাহরণ থেকে প্রত্যাহার হলে অথবা আপনি ভিডিওটি দেখেছেন থাকেন তাহলে, আপনাকে কল you- যখন জানি যে সেট কোন int কার্যকরভাবে কিছুই না. কিন্তু কল অ্যারে আছে সেট. এবং আমি ধরণের কেন ওভার glossed যে সময়ে ক্ষেত্রে ছিল. আমি শুধু ভাল এটা, এটি একটি অ্যারে, বলেন বিশেষ, আপনি জানেন, একটা কারণ আছে. কারণ এটা একটা অ্যারে হয় নাম, সত্যিই শুধু একটি পয়েন্টার এবং এই বিশেষ আছে বর্গাকার বন্ধনী সিনট্যাক্স যে এর সাথে কাজ করা কিছু অনেক nicer করা. তাঁরা একটি ধারণা করা অনেক কম ভয় দেখিয়ে পয়েন্টার, তারা সাজান আছেন যে কেন যে ভাবে উপস্থাপন. কিন্তু সত্যিই অ্যারে শুধু পয়েন্টার. এবং যে কেন যখন আমরা , অ্যারের পরিবর্তনটি আমরা একটি প্যারামিটার হিসেবে একটি অ্যারের পাস হলে একটি ফাংশন বা একটি যুক্তি হিসেবে অ্যারের একটি ফাংশন, বিষয়বস্তু আসলে উভয় callee মধ্যে পরিবর্তিত এবং কলার মধ্যে. প্রতি অন্য ধরনের জন্য যা আমরা দেখেছি পরিবর্তনশীল ক্ষেত্রে ছিল না. সুতরাং যে রাখা শুধু কিছু আপনি পয়েন্টার সঙ্গে কাজ করছি যখন মনে, যে একটি নাম অ্যারে আসলে একটি পয়েন্টার যে অ্যারের প্রথম উপাদান. ঠিক আছে, তাই এখন আমরা এই সব আছে তথ্য, অধিকার, বর্তা যাক. কেন আমরা যত্ন সম্পর্কে না যেখানে কিছু বসবাস. আমি আগেই বলেছি আচ্ছা মত, এটা প্রশংসনীয় কিছু কোথায় থাকে দরকারী তাই আপনি সেখানে যান এবং এটি পরিবর্তন করতে পারেন. এটা দিয়ে কাজ এবং আসলে জিনিস আছে যে আপনি যে পরিবর্তনশীল প্রয়োগ করতে চান, এবং এটা কিছু কপি কার্যকর না. এই dereferencing বলা হয়. আমরা রেফারেন্স যান এবং আমরা সেখানে মান পরিবর্তন. আমরা একটি ইশারা আছে এবং যদি তাই এটা বলা হচ্ছে পিসি, এবং এটি একটি চরিত্র স্থানটিকে, তারপর আমরা * পিসি এবং * পিসি বলতে পারেন আমরা যেতে চান, খুঁজে পাবেন কি নাম অঙ্ক পিসি. আমরা কি সেখানে পাবেন একটি চরিত্র এবং * পিসি আমরা যে এ তথ্য পড়ুন কিভাবে হয় পাঁচ. তাই আমরা ভালো কিছু বলতে পারে * পিসি = D অথবা যে ভালো কিছু, এবং যে এর মানে হল যে যাই হোক না কেন , মেমরি অঙ্ক পিসি ছিল যাই হোক না কেন চরিত্র পূর্বে ছিল আমরা পিসি = D * যদি বলি সেখানে, এখন ঘ. তাই আমরা এখানে দিয়ে আবার যান কিছু অদ্ভুত সি স্টাফ, ঠিক আছে. সুতরাং আমরা হচ্ছে নাটক * দেখা করেছি একরকম ডাটা টাইপ অংশ, এবং এখন এটি ব্যবহৃত হচ্ছে কিছুটা ভিন্ন প্রেক্ষাপটে একটি অবস্থানে তথ্য অ্যাক্সেস করতে. আমি এটা একটু বিভ্রান্ত জানি এবং যে আসলে এই পুরো অংশ মত, কেন পয়েন্টার এই পুরাণ আছে তাদের চারপাশে এত জটিল হচ্ছে, সত্যি বলতে, একটি সিনট্যাক্স সমস্যা ধরনের. কিন্তু * উভয় প্রেক্ষিতে ব্যবহার করা হয়, উভয় ধরনের নামের অংশ হিসাবে, এবং আমরা একটু দেখতে পাবেন খুব অন্য কিছু পরে,. আর এই মুহূর্তে dereference অপারেটর. সুতরাং এটা রেফারেন্স যায়, এটা ডাটা ব্যবহারের হার পয়েন্টার পাঁচ, এ এবং আপনি স্বেচ্ছায় এটি পরিবর্তন করা যাবে. এখন এই অনুরূপ আপনার প্রতিবেশী গিয়ে, ঠিক আছে. যদি আপনি কি জানেন আপনার প্রতিবেশী আপনি আছেন, জীবিত আছেন আপনার প্রতিবেশীর সঙ্গে ঝুলন্ত আউট না. আপনি যদি এরকম জানেন তারা যেখানে বসবাস জানি, কিন্তু যে দ্বারা অর্থ এই নয় যে যে জ্ঞান থাকার শক্তি কর্মদক্ষতার আপনি তাদের সাথে আলাপচারিতার হয়. আপনি তাদের সাথে যোগাযোগ করতে চান, আপনি, তাদের বাড়ী যেতে হবে আপনি যেখানে তারা বাস করতে যেতে হবে. এবং আপনি যে একবার, তারপর আপনি যোগাযোগ করতে পারবেন তাদের সঙ্গে আপনি চাই চাই চাই. আর একইভাবে ভেরিয়েবল সঙ্গে, আপনি তাদের ঠিকানায় যেতে হবে আপনি তাদের যোগাযোগ করতে চান তাহলে, আপনি শুধু অঙ্ক জানি পারবেন না. আর আপনি ঠিকানায় যান উপায় *, ডি-রেফারেন্স অপারেটর ব্যবহার করতে. আপনি কি মনে করেন আমরা চেষ্টা এবং ডি-রেফারেন্স যদি যার মান একটি নাল পয়েন্টার হয়? নাল পুনরাহ্বান যে পয়েন্টার কিছুই স্থানটিকে. আপনি চেষ্টা এবং ডি-রেফারেন্স সুতরাং যদি কিছুই একটি ঠিকানা কিছুই যান বা, আপনি কি মনে করেন? আচ্ছা আপনি অনুমিত যদি সেগমেন্টেশন দোষ, আপনি সঠিক হতে চাই. আপনি চেষ্টা এবং ডি-রেফারেন্স যদি একটি নাল পয়েন্টার, আপনি একটি সেগমেন্টেশন ভোগে দোষ. কিন্তু অপেক্ষা করো, আমি যে, আপনাকে বলতে না আপনি যাচ্ছেন না হলে আপনার মূল্য নির্ধারণ করার জন্য আপনার অর্থপূর্ণ কিছু পয়েন্টার, আপনি শূন্য নির্ধারণ করা উচিত? আমি এবং আসলে সেগমেন্টেশন দোষ একটি ভাল ব্যবহার ধরনের. আপনি কি একটি পরিবর্তনশীল ঘোষণা করেছেন অবিলম্বে তার মান নির্ধারিত হয় নি? তাই আপনি শুধু int x এর বলতে; যদি তা চান না আসলে কিছু করার তা নির্ধারণ করুন এবং তারপর পরে আপনার কোড মধ্যে, আপনি, x এর মান প্রিন্ট আউট এখনও না থাকার কিছু করার তা নির্ধারিত হয়. প্রায়ই আপনি পাবেন শূন্য, কিন্তু কখনও কখনও আপনি কিছু র্যান্ডম সংখ্যা পেতে, এবং পারে আপনি এটি থেকে এসেছেন যেখানে কোন ধারণা আছে. একইভাবে কিছু করতে পারেন পয়েন্টার সঙ্গে ঘটেছে. আপনি একটি পয়েন্টার ডিক্লেয়ার কোন int * উদাহরণস্বরূপ PK, এবং যদি আপনি একটি মূল্য তা নির্ধারণ না আপনি মেমরি জন্য চার বাইট পেতে. যাই হোক না কেন চার বাইট সিস্টেম মেমরি পারেন কিছু অর্থপূর্ণ মান আছে খুঁজে. হয়েছে সেখানে পারে ইতিমধ্যে সেখানে এমন কিছু অন্য প্রয়োজনীয় আর হয় ফাংশন, আপনি শুধু আছে তাই যাই হোক না কেন তথ্য ছিল. আপনি কি ডি-রেফারেন্স করতে চেষ্টা যদি আপনি সেখানে don't- যে কিছু অঙ্ক ইতিমধ্যে বাইট এবং তথ্য সেখানে, যে আপনার পয়েন্টার এখন এর. , আপনি চেষ্টা করুন এবং যে পয়েন্টার ডি-রেফারেন্স আপনি কিছু স্মৃতি সঙ্গে সেনাবিভাগে মেসে খাবার হতে পারে আপনি চানও নি যে এটা সব সঙ্গে জগাখিচুড়ি. এবং আসলে আপনি কাজ করতে পারে সত্যিই বিধ্বংসী কিছু, ভালো বা অন্য প্রোগ্রাম বিরতি, অথবা, অন্য ফাংশন বিরতি অথবা যে দূষিত কিছু না আপনি এ সব কি করতে চানও নি. এটা কেন এবং যাতে আসলে একটি ভাল ধারণা আপনি যদি নাল আপনার পয়েন্টার সেট অর্থপূর্ণ কিছু তাদের সেট না. এটা এ সম্ভবত ভালো আপনার প্রোগ্রামের জন্য দিনের শেষে এটা কি জন্য তারপর বিপর্যস্ত কিছু যে স্ক্রু আপ অন্য প্রোগ্রাম বা অন্য ফাংশন. যে আচরণ এমনকি সম্ভবত শুধু বিপর্যয় কম আদর্শ. এটা কেন এবং যাতে আসলে একটি ভাল অভ্যাস আপনার পয়েন্টার সেট ঢোকা আপনি তাদের সেট না থাকে তাহলে নাল একটি অর্থপূর্ণ মান আপনি জানেন যে, অবিলম্বে একটি মান এবং যে আপনি ডি-রেফারেন্স নিরাপদে পারেন. তাই আসুন এখন ফিরে আসা যাক এবং দেখব পরিস্থিতির সার্বিক সিনট্যাক্স এ. আমি int * P যদি বলি ;, আমি কি করেছি? আমি কি সম্পন্ন করেছি এই হল. আমি পি মান একটি ঠিকানা জানি সব পয়েন্টার ঠিক আছে, কারণ ঠিকানাগুলি. আমি করতে ডি-রেফারেন্স P * অপারেটর ব্যবহার. খুব এখানে এই প্রেক্ষাপটে শীর্ষ * টাইপ অংশ প্রত্যাহার. * আন্তর্জাতিক ডাটা টাইপ. কিন্তু আমি ডি-রেফারেন্স করতে পারেন * অপারেটর ব্যবহার P, এবং আমি তাই করতাম তবে আমি যে ঠিকানায় যান তাহলে, আমি যে ঠিকানায় কি পাবেন? আমি একটি পূর্ণসংখ্যা পাবেন. সুতরাং int- * পি মূলত বলার অপেক্ষা রাখে না, পি একটি ঠিকানা থাকে. আমি করতে P ডি-রেফারেন্স এবং যদি আমি না, আমি একটি পূর্ণসংখ্যা পাবেন যে মেমরি অবস্থানে. ঠিক আছে, তাই আমি অন্য ছিল বলেন বড় সঙ্গে বিরক্তিকর জিনিস এবং এখানে যে যেখানে বড় সঙ্গে বিরক্তিকর জিনিস. আপনি কি ঘোষণা করতে চেষ্টা করছেন একই ধরনের একাধিক ভেরিয়েবল কোড একই লাইনে? সুতরাং একটি দ্বিতীয় জন্য, যে লাইন জাহির আমি আসলে সবুজ সেখানে আছে কোড নেই এবং এটা শুধু int-X, Y, Z বলেছেন ;. কি যে করতে হবে আসলে তৈরি হয় আপনার জন্য তিনটি পূর্ণসংখ্যা ভেরিয়েবল, এক বলা X, নামক এক Y, এবং এক জেড '. এটা ছাড়া এটা করতে একটি উপায় তিনটি লাইন সম্মুখের বিভক্ত করতে হচ্ছে. বড় পেতে এখানে যেখানে যদিও আবার বিরক্তিকর, * আসলে অংশ, কারণ উভয় প্রকার নাম এবং অংশ ভেরিয়েবল নামের. আর তাই আমি যদি বলি কোন int * px এর, PY, PZ, তা আমি আসলে পেতে একটি পূর্ণসংখ্যা একটি পয়েন্টার px এবং দুটি পূর্ণসংখ্যার, PY এবং PZ বলা. এবং যে সম্ভবত না কি আমরা যে ভাল না, চান. আমি একাধিক পয়েন্টার তৈরি করতে চান তাহলে একই লাইনে, একই ধরনের, আমি আসলে কি প্রয়োজন এবং বড়, করতে * PB, * পিসি, কোন int * পিএ বলতে হয়. এখন শুধু যে বলেন না এবং এখন, আপনি এই কহন আপনি সম্ভবত এই কাজ করবে না. এবং এটা সত্যি বলতে সম্ভবত একটি ভাল জিনিস আপনি অনবধানতাবশত হতে পারে, কারণ একটি তারকা, যে ভালো কিছু বর্জন করা. এটা হতে পারে ঘোষণা সম্ভবত সেরা পৃথক লাইন পয়েন্টার, কিন্তু এটা শুধু আরেকটি এক যারা বিরক্তিকর সিনট্যাক্স যে বড় সঙ্গে কিছু এর সাথে কাজ করা এত কঠিন পয়েন্টার. এটা শুধু এই অন্বিত কারণ জগাখিচুড়ি আপনি মাধ্যমে কাজ করার আছে. অনুশীলনের সাথে আছে সত্যিই দ্বিতীয় প্রকৃতি হয়ে. আমি এখনও এটা দিয়ে ভুল করা 10 বছর জন্য প্রোগ্রামিং পর, কিছু ঘটে তাহলে তাই মন খারাপ করবেন না আপনি, এটা সত্যই প্রশংসনীয় সাধারণ. এটা কোন ধরনের সত্যিই সিনট্যাক্স একটি ত্রুটি. ঠিক আছে, তাই আমি ধরনের প্রতিশ্রুতি আমরা পরিদর্শন করবে কত বড় ধারণা একটি পংক্তি. আচ্ছা আমি একজন যে তোমাকে বলেছিলাম তাহলে স্ট্রিং, আমরা ধরনের সত্যিই করেছি আপনি পুরো সময় মিথ্যা বলে. বলা কোন ডাটা টাইপ আছে স্ট্রিং, এবং আসলে আমি এক এই উল্লেখ আমাদের তথ্য ধরনের উপর নিকটতম ভিডিও, স্ট্রিং একটি ডাটা টাইপ ছিল cs50.h. আপনার জন্য তৈরি করা হয়েছে আপনি # অন্তর্ভুক্ত করতে হবে এটি ব্যবহার করার জন্য যে cs50.h. ওয়েল স্ট্রিং শুধু সত্যিই হয় কিছু একটি alias , গৃহস্থালি * নামক একটি একটি অক্ষর পয়েন্টার. ওয়েল পয়েন্টার, রিকল, শুধু ঠিকানাগুলো. তাই সাইজ কি একটি স্ট্রিং এর বাইট? আচ্ছা এটা চার বা আট এর. এবং কারণ আমি বলতে চার বা আট এটা কারণ আসলে আপনি ব্যবহার করছেন, সিস্টেমের উপর নির্ভর করে এবং CS50 IDE, গৃহস্থালি * একটি গৃহস্থালি মাপ * এটি একটি 64 বিট সিস্টেম, আটটা. স্মৃতিতে প্রতিটি অঙ্ক 64 বিট দীর্ঘ. আপনি CS50 ব্যবহার করছেন বা কোনো 32-বিট মেশিনের ব্যবহার, এবং আপনি যে শব্দটি 32-বিট শোনা করেছি মেশিন, একটি 32 বিট মেশিনের কি? আচ্ছা এটা শুধু ভাষার যে মানে স্মৃতিতে অঙ্ক 32 বিট দীর্ঘ. আর তাই 32 বিট চার বাইট. সুতরাং একটি গৃহস্থালি * চার বা আট আপনার সিস্টেমের উপর নির্ভর বাইট. এবং প্রকৃতপক্ষে কোনো ধরনের তথ্য, এবং কোন তথ্য একটি পয়েন্টার সব পয়েন্টার ঠিক, যেহেতু টাইপ ঠিকানা, চার বা আট বাইট হয়. তাই আসুন এই পরিদর্শন দিন ডায়াগ্রাম এবং এর উপসংহারে আসতে দিন এখানে একটু ব্যায়াম সাথে এই ভিডিও. তাই আমরা এখানে দিয়ে বাম বন্ধ ডায়াগ্রাম এর ভিডিও খুব প্রারম্ভে. আমি * PK = 35 বলে তাহলে তো এখন কী? সুতরাং এটা * PK = 35, যখন আমি বলতে কি বোঝায়? কয়েক সেকেন্ড সময় নিন. * PK. এখানে প্রসঙ্গে * হয় dereference অপারেটর. সুতরাং যখন ডি-রেফারেন্স অপারেটর ব্যবহার করা হয়, অঙ্ক জোরাল করতে যেতে PK করে, এবং আমরা এটি কি পরিবর্তন. সুতরাং * PK = 35 কার্যকরভাবে ছবি এই আছে. সুতরাং এটা সিনট্যাক্স মূলত এর অভিন্ন K = 35 বলে. আরেকটি. আমি int এম আর যদি বলি, আমি তৈরি এম নামে একটি নতুন পরিবর্তনশীল. একটি নতুন বক্স, এটি একটি সবুজ বক্স কারণ এর এটি একটি পূর্ণসংখ্যা রাখা যাচ্ছে, এবং এটি এম লেবেল এর. আমি M = 4 যদি বলি, আমি একটি করা যে বাক্সে পূর্ণসংখ্যা. বলে PK = & M, কিভাবে যদি এই চিত্রটি পরিবর্তন? PK = & M, আপনি কি প্রত্যাহার না & অপারেটর আছে বা বলা হয়? যে ও কিছু পরিবর্তনশীল নাম মনে রাখুন একটি ভেরিয়েবল নামের ঠিকানা. তাই কি আমরা বলছে PK মিটার অঙ্ক পায়. এবং যাতে কার্যকরভাবে কি ঘটবে চিত্রটি যে আর পয়েন্ট PK হয় এম, কিন্তু পয়েন্ট ট. আবার পয়েন্টার খুব হয় এর সাথে কাজ করা চতুর এবং তারা অনেক সময় লাগবে অভ্যাস, কিন্তু কারণ আপনি অনুমতি দেওয়া হয় তাদের ক্ষমতা ফাংশন মধ্যে পাস তথ্য এবং আসলে ঐ আছে পরিবর্তনগুলি প্রয়োগ করা, আপনার মাথার চারপাশে পেয়ে সত্যিই গুরুত্বপূর্ণ. এটা সম্ভবত সবচেয়ে জটিল আমরা CS50 মধ্যে আলোচনা বিষয়ে, কিন্তু মূল্য যে আপনি পয়েন্টার ব্যবহার থেকে পেতে পর্যন্ত জটিলতা তুলনায় যে তাদের শেখার থেকে আসা. তাই আমি আপনাকে ভাল কামনা ভাগ্য পয়েন্টার সম্পর্কে শেখার. আমি ডগ লয়েড আছি, এই CS50.