1 00:00:00,000 --> 00:00:11,242 >> [সঙ্গীত বাজানো] 2 00:00:11,242 --> 00:00:16,630 >> ডেভিড জে Malan: ঠিক আছে এটি CS50 এবং এই সপ্তাহে পাঁচটি শুরু. 3 00:00:16,630 --> 00:00:21,480 আজ তাই, আপনার সীট নিরাপত্তা নীচে, আপনি কিছু পাবেন না. 4 00:00:21,480 --> 00:00:24,790 কিন্তু উপরে, আপনি একটি, এই এটি করা উচিত আমাদের জন্য উপচয় সামান্য টোকেনের 5 00:00:24,790 --> 00:00:26,970 আপনি যে কাজ করা সব পঞ্চদশ খেলার মধ্যে. 6 00:00:26,970 --> 00:00:30,290 শুধু সামান্য বৃত্ত অপসারণ জন্য বাজানো শুরু নিচ থেকে 7 00:00:30,290 --> 00:00:31,680 ক্লাসের বাকি. 8 00:00:31,680 --> 00:00:38,930 >> সুতরাং যে পুনরাহ্বান, অথবা সেট যে সমস্যা জানি এই সপ্তাহান্তে গিয়েছিলাম আউট, যা চার, 9 00:00:38,930 --> 00:00:40,340 অন্য খেলা লেখার জড়িত. 10 00:00:40,340 --> 00:00:43,740 কিন্তু জড়িয়ে আছে এই সময় একটি ব্যবহার করে প্রকৃত গ্রাফিক্যাল ইউজার ইন্টারফেস, না একটি 11 00:00:43,740 --> 00:00:46,310 ভালো টেক্সচুয়াল ইন্টারফেস পনেরো খেলা ছিল. 12 00:00:46,310 --> 00:00:50,210 এবং এগিয়ে আপনি মিথ্যা খেলা যে, আপনি এখনও এই পরবর্তী দেখা যায় না করেছি, 13 00:00:50,210 --> 00:00:52,310 একটি ভালো সামান্য কিছু দেখায়. 14 00:00:52,310 --> 00:00:55,170 আমি আমার টার্মিনাল ঢোকা যাচ্ছে না এখানে GDB-র মধ্যে উইন্ডোর. 15 00:00:55,170 --> 00:00:58,600 এবং আমি এগিয়ে যান এবং চালানো যাচ্ছে না আপনি অ্যাক্সেস করতে পারেন, যা কর্মীদের সমাধান, 16 00:00:58,600 --> 00:01:01,010 স্বাভাবিক হিসাবে হালনাগাদ 50 পশ্চাদ্ধাবন. 17 00:01:01,010 --> 00:01:04,090 >> কিন্তু আমি একটু মধ্যে এটি করা যাচ্ছে না গোপন মোড, একটু ইস্টার ডিম, 18 00:01:04,090 --> 00:01:08,480 দ্বারা, ঈশ্বরের মোড তথাকথিত argv1 ঈশ্বরের নির্বাণ. 19 00:01:08,480 --> 00:01:12,920 এবং আমি আমার নিজের দিক নির্দেশনা অনুসরণ করতে হবে আমার নিজের মধ্যে এটি চলমান 20 00:01:12,920 --> 00:01:14,220 সমস্যা ডিরেক্টরি সেট করুন. 21 00:01:14,220 --> 00:01:19,190 তাই এখন আপনি একটি সম্পূর্ণ সংস্করণ দেখুন ব্রেকআউট এর খেলা. 22 00:01:19,190 --> 00:01:21,090 বস্তুত, এই কোন হাত মোড. 23 00:01:21,090 --> 00:01:24,850 সুতরাং এটা আসলে এর - 24 00:01:24,850 --> 00:01:26,470 যদিও wowed আপনি হতে পারে - 25 00:01:26,470 --> 00:01:30,850 ঈশ্বরের মোড বাস্তবায়ন বেশ তুচ্ছ ব্রেকআউট, পনের খেলা অসদৃশ, 26 00:01:30,850 --> 00:01:33,590 যা আপনি কিছু মোকাবেলা হতে পারে হ্যাকার সংস্করণ জন্য. 27 00:01:33,590 --> 00:01:37,890 >> ব্রেকআউট এটা ঈশ্বরের মধ্যে যথেষ্ট মোড সহজভাবে, কি করতে হবে 28 00:01:37,890 --> 00:01:41,220 intuitively বাহা সঙ্গে? 29 00:01:41,220 --> 00:01:45,630 শুধু যাই হোক না কেন সমান করতে আনুভূমিক অবস্থান বল হয়. 30 00:01:45,630 --> 00:01:49,220 তাই যতদিন আপনি lockstep এই কাজ হিসেবে এই গেমটি চলন্ত বল দৃঢ়প্রতিজ্ঞভাবে 31 00:01:49,220 --> 00:01:53,100 , কখনো কখনো বল মিস্ এবং আপনি প্রত্যেক সময় জয় করব. 32 00:01:53,100 --> 00:01:55,430 >> কিন্তু এই সপ্তাহে এর হ্যাকার সংস্করণ শুধু ঈশ্বরের মোড চেয়ে আরো আছে. 33 00:01:55,430 --> 00:01:56,720 অন্যান্য বৈশিষ্ট্য একটি সংখ্যা আছে. 34 00:01:56,720 --> 00:01:58,140 তাদের মধ্যে, লেজার. 35 00:01:58,140 --> 00:02:01,070 যাতে আপনি সত্যিই আপনি অধীর পেতে হলে ইষ্টকদ্বারা নিচে শুটিং শুরু করতে পারেন 36 00:02:01,070 --> 00:02:02,120 এবং কয়েক অন্যদের. 37 00:02:02,120 --> 00:02:04,560 এবং চাই আপনাদের মধ্যে যারা জন্য প্রমিত বনাম হ্যাকার শক্তির পরিমাপ করা 38 00:02:04,560 --> 00:02:08,750 সংস্করণ, আমি দেখতে পারেন যে এই সপ্তাহে হ্যাকার সংস্করণ ইচ্ছাকৃতভাবে একটি 39 00:02:08,750 --> 00:02:12,830 ঈশ্বর আর বলে, একটু বেশি doable মোড পঞ্চদশ খেলার সঙ্গে ছিল. 40 00:02:12,830 --> 00:02:15,300 >> আপনি একটি প্রসারিত খুঁজছেন এবং করছি তাই আপনি যদি আপনি কিছু অতিরিক্ত মজা খুঁজছেন 41 00:02:15,300 --> 00:02:18,400 বৈশিষ্ট্য সুদ যদি ডুব না. 42 00:02:18,400 --> 00:02:21,280 এখন আরও কার্যকরীভাবে, আমাকে নির্দেশ দেওয়া এক জিনিস আউট হিসাবে ভাল. 43 00:02:21,280 --> 00:02:24,780 আপনি কিছু এখনো থাকতে পারে না যা GDB-র, সূক্ষ্ম, যা ব্যক্তিগতভাবে স্পর্শ. 44 00:02:24,780 --> 00:02:28,530 কিন্তু এখন সত্যিই ব্যবহৃত পেতে সময় এই সরঞ্জামের সঙ্গে এই এবং আরামদায়ক যাও 45 00:02:28,530 --> 00:02:31,510 এটা আপনার জীবন করতে হবে, কারণ অনেক সহজ, সত্যিই. 46 00:02:31,510 --> 00:02:34,900 >> GDB-র একটি দম্পতি নেভিগেশন রব এর বক্তৃতা প্রতি সপ্তাহ আগে, প্রত্যাহার 47 00:02:34,900 --> 00:02:36,810 যে GDB-র একটি ডিবাগার হয়. 48 00:02:36,810 --> 00:02:41,230 এটি আপনি চালাতে দেয় একটি হাতিয়ার আপনার প্রোগ্রাম কিন্তু এটি ধাপে, লাইন ধাপে চালানো 49 00:02:41,230 --> 00:02:45,680 লাইন দ্বারা, যাতে আপনি, কাছাকাছি অকর্মা করতে পারেন আপনি জিনিষ ঘটছে দেখতে যাতে, তাই 50 00:02:45,680 --> 00:02:47,310 আপনি প্রিন্ট আউট করতে পারেন ভেরিয়েবল এর মান. 51 00:02:47,310 --> 00:02:50,580 সংক্ষেপে বলতে গেলে, এটি আপনাকে আরও অনেক কিছু দেয় printDef আর ক্ষমতা আছে. 52 00:02:50,580 --> 00:02:52,900 >> এখন বোঝা যাচ্ছে যে নেতারা, ইন্টারফেস বেশ রহস্যময় হয়. 53 00:02:52,900 --> 00:02:55,180 সাদা ও কালো টেক্সচুয়াল ইন্টারফেস অধিকাংশ অংশ জন্য. 54 00:02:55,180 --> 00:02:57,400 কমান্ড কিছুটা শক্ত হয় প্রথমে মনে. 55 00:02:57,400 --> 00:03:01,230 কিন্তু আপনি অর্ধেক সময় নিতে পারে, যদিও একটি ঘন্টা, একটি ঘন্টা, যে আপফ্রন্ট করা 56 00:03:01,230 --> 00:03:02,940 তা সময় বিনিয়োগ, বিশ্বাস করুন. 57 00:03:02,940 --> 00:03:06,440 অবশ্যই সেমিস্টারে এর শেষে এটি সংরক্ষণ করতে হবে আরো মাত্রার আপনি একটি আদেশ 58 00:03:06,440 --> 00:03:07,600 যে বেশী সময়. 59 00:03:07,600 --> 00:03:09,200 >> ইন সপ্তাহে ডুব তাই তাড়াতাড়ি 60 00:03:09,200 --> 00:03:13,200 এবং ব্রেকআউট শর্তাবলী, জানেন যে আপনি আপনি তাই যতদিন আপনি এটা করতে পারেন 61 00:03:13,200 --> 00:03:18,230 ডিস্ট্রিবিউশন কোড বা আপনার নিজের কোড আপনার Pst4 ডিরেক্টরির মধ্যে অগ্রগতি. 62 00:03:18,230 --> 00:03:21,680 আপনি GDB চালানো সম্ভব না. / ব্রেকআউট. 63 00:03:21,680 --> 00:03:23,490 >> এই পর্যন্ত খোলা যাচ্ছে এই মত একটি উইন্ডো. 64 00:03:23,490 --> 00:03:25,530 আমার সম্পর্কে নিজেকে আরো দিতে একটি টার্মিনাল উইন্ডোর. 65 00:03:25,530 --> 00:03:27,770 এবং তারপর কি আমি এগিয়ে যেতে চলেছি এবং না, এটা ঠিক এটি চালানোর জন্য না. 66 00:03:27,770 --> 00:03:30,690 আমি প্রথম একটি বিভাজক পয়েন্ট নির্ধারণ করা যাচ্ছে না বিরতি করতে পারবেন যা রিকল, 67 00:03:30,690 --> 00:03:32,500 একটি নির্দিষ্ট স্থানে মৃত্যুদন্ড. 68 00:03:32,500 --> 00:03:35,750 >> আমি যাচ্ছি জিনিষ সহজ রাখা টাইপ করে ঠিক লাইন এক সময়ে বিরতি 69 00:03:35,750 --> 00:03:37,000 এক নম্বর. 70 00:03:37,000 --> 00:03:40,080 71 00:03:40,080 --> 00:03:43,250 আমার সম্পর্কে আসলে এই উইন্ডোটি পুনরায় খুলুন এটি একটি পাওয়ার কারণ 72 00:03:43,250 --> 00:03:45,700 সেখানে একটু ছোট. 73 00:03:45,700 --> 00:03:53,270 তাই এখন আমি এখানে করতে যাচ্ছি না আমি আমার টার্মিনাল উইন্ডোতে খুলুন না. 74 00:03:53,270 --> 00:03:53,910 সেখানে আমরা যেতে, চলো. 75 00:03:53,910 --> 00:03:59,850 >> আমি ড্রপবক্স, Pst4 ফিরে যান তাই এখন যদি এবং GDB চালানো. / ব্রেকআউট লিখুন, বিজ্ঞপ্তি 76 00:03:59,850 --> 00:04:02,600 আমি এক সেট বিরতি যাচ্ছে না লাইন এক একটি বিরতি বিন্দু. 77 00:04:02,600 --> 00:04:04,840 এবং এখন আমি যেতে চলেছি এগিয়ে যান এবং টাইপ করুন. 78 00:04:04,840 --> 00:04:07,370 এবং আমি যখন, কিছুই বিজ্ঞপ্তি ঘটতে মনে হচ্ছে. 79 00:04:07,370 --> 00:04:08,120 >> কোন পপ আপ আছে. 80 00:04:08,120 --> 00:04:09,790 কোন গ্রাফিকাল আছে কোনো ব্যবহারকারী ইন্টারফেস. 81 00:04:09,790 --> 00:04:13,340 আমি কারণ বোধগম্য যে এর আক্ষরিক আমার প্রোগ্রাম লাইন এক সময়ে. 82 00:04:13,340 --> 00:04:17,110 এবং আমি দ্রুত ফরওয়ার্ড করেছি বিজ্ঞপ্তি বিশেষভাবে এখন 62, সব কারণ 83 00:04:17,110 --> 00:04:20,600 এই ফাইলটি শীর্ষে উপাদান মন্তব্য এবং ধ্রুবক ভালো জিনিস এবং 84 00:04:20,600 --> 00:04:22,460 এখন জন্য স্টাফ নীরস. 85 00:04:22,460 --> 00:04:25,840 >> তাই এখন আমি, প্রধান ভিতরে আছি এটি লাইন 62 এ, বলে মনে হয়. 86 00:04:25,840 --> 00:04:27,960 এবং এই মাত্র উঠেছে কোড, রিকল. 87 00:04:27,960 --> 00:04:33,810 আমি একইভাবে, যাচ্ছে এই পর্যন্ত খোলা আমার ড্রপ বক্স ডিরেক্টরি Pst4 মধ্যে মধ্যে, 88 00:04:33,810 --> 00:04:35,450 breakout.c মধ্যে. 89 00:04:35,450 --> 00:04:40,670 এবং আমি নিচে এবং নিচে স্ক্রল ডাউন এবং যদি, এবং আমাকে এগিয়ে যান এবং চালু করা যাক 90 00:04:40,670 --> 00:04:44,990 আমার লাইন নম্বর. 91 00:04:44,990 --> 00:04:50,300 >> আমি নিচে স্ক্রল আমি দেখতে পাবেন কি, যদি লাইন 62, ঠিক লাইন যে 92 00:04:50,300 --> 00:04:50,910 আমরা স্থগিত করেছি. 93 00:04:50,910 --> 00:04:53,720 এই লাইন এখানে, 62, তাই আমরা হতে চলেছেন যেখানে. 94 00:04:53,720 --> 00:04:57,470 তাই এখন GDB-র মধ্যে, আমি এগিয়ে যান এবং যদি টাইপ এখন পরে, এটা যাচ্ছে লিখুন 95 00:04:57,470 --> 00:04:58,450 যে লাইন চালানো. 96 00:04:58,450 --> 00:05:00,610 এবং voila, আমরা গ্রাম উইন্ডোতে তথাকথিত. 97 00:05:00,610 --> 00:05:02,800 কি GWindow সঙ্গে অপরিচিত যদি চিন্তা করতে না হয়. 98 00:05:02,800 --> 00:05:05,740 বৈশিষ্ট হিসাবে, এটি আপনাকে পরিচয় করিয়ে দিতে হবে ভাল walkthrough ভিডিও একটি সংখ্যা হিসেবে 99 00:05:05,740 --> 00:05:06,830 বৈশিষ্ট এমবেড করা. 100 00:05:06,830 --> 00:05:08,610 >> কিন্তু এখন এর এই একটি যাক একটু বেশি আকর্ষণীয়. 101 00:05:08,610 --> 00:05:10,960 আমাকে এই উইন্ডোর উপর সরানো যাক পাশ থেকে একটি সামান্য বিট. 102 00:05:10,960 --> 00:05:13,480 আমার সম্পর্কে উইন্ডোতে সামান্য করা যাক বড় তাই আমি আরো দেখতে পারেন. 103 00:05:13,480 --> 00:05:16,140 >> এবং এখন আমাকে এগিয়ে যান এবং আবার পরের করতে. 104 00:05:16,140 --> 00:05:17,550 এবং আমার ইষ্টকদ্বারা আছে. 105 00:05:17,550 --> 00:05:20,490 আমি পরের আবার টাইপ করা হলে এখন আমি বল দেখতে. 106 00:05:20,490 --> 00:05:23,520 এবং আমি পরের আবার টাইপ করা হলে এখন আমি বাহা দেখুন. 107 00:05:23,520 --> 00:05:26,690 >> এবং ভাগ্যক্রমে এই gedit না সত্যিই আমাকে দেখিয়ে সহযোগী 108 00:05:26,690 --> 00:05:27,660 আমি চাই সবকিছু. 109 00:05:27,660 --> 00:05:30,820 কিন্তু এখন আমি পরের আবার না, পরের আবার, আমি আছি 110 00:05:30,820 --> 00:05:32,260 কিছু ভেরিয়েবল ঘোষণা. 111 00:05:32,260 --> 00:05:34,750 আর আমি কোনো এক মুদ্রণ করতে পারেন খুঁজে এইসব বলছি. 112 00:05:34,750 --> 00:05:37,170 প্রিন্ট করুন ইট, প্রিন্ট জীবন. 113 00:05:37,170 --> 00:05:39,910 >> এবং এখন আমি কি অবিরত যদি পরবর্তী, আমি থাকব যে বিজ্ঞপ্তি 114 00:05:39,910 --> 00:05:40,870 যে লুপ এর ভিতরে. 115 00:05:40,870 --> 00:05:43,380 কিন্তু কোড চালানো যাচ্ছে আমি আশা ঠিক হিসাবে. 116 00:05:43,380 --> 00:05:45,810 তাই আমি এই ফাংশন আঘাত, অপেক্ষা করুন ক্লিক করুন, এটি করতে যাচ্ছে 117 00:05:45,810 --> 00:05:46,830 এটা আক্ষরিক যে. 118 00:05:46,830 --> 00:05:48,870 তাই আমি নিয়ন্ত্রণ হারিয়ে করলো প্রোগ্রাম ওভার. 119 00:05:48,870 --> 00:05:50,480 >> GDB-র সম্পর্কে অন্য একটি প্রম্পট প্রদান করা হয় না. 120 00:05:50,480 --> 00:05:51,500 কিন্তু চিন্তা করবেন না. 121 00:05:51,500 --> 00:05:53,720 আমার খেলা যান, কোথাও ক্লিক করুন. 122 00:05:53,720 --> 00:05:56,270 >> এবং voila এখন, এটা লাইন 86 থেকে আয়. 123 00:05:56,270 --> 00:05:59,460 তাই আবার, এটা শেষ পর্যন্ত, অমূল্য এর ডিবাগিং সমস্যার জন্য. 124 00:05:59,460 --> 00:06:03,050 আপনি আক্ষরিক মাধ্যমে পইঠা পারে আপনার কোড আউট, এবং আরো অনেক কিছু মুদ্রণ জিনিষ, 125 00:06:03,050 --> 00:06:03,640 অনেক, আরো. 126 00:06:03,640 --> 00:06:07,210 একা কিন্তু এখন জন্য, যারা হাতিয়ারসমূহ প্রবেশ করুন বেশ দূরে আপনি পাওয়া উচিত. 127 00:06:07,210 --> 00:06:10,050 >> সুতরাং আমরা কটাক্ষপাত গ্রহণ, অবশ্যই, আপনি আছেন এ এখন গ্রাফিক্স, একটি অপ্রত্যাশিত সব. 128 00:06:10,050 --> 00:06:12,350 এবং এখন আমাদের বিশ্বের একটি সামান্য পায় আরো আকর্ষণীয়. 129 00:06:12,350 --> 00:06:15,680 এবং যদি আপনি কিছু থেকে, সম্ভবত জানেন, আমরা এই আছে যে অনলাইন ভিডিও 130 00:06:15,680 --> 00:06:18,280 আপনার দেখা হয়েছে করেছি যে হাফপ্যান্ট সমস্যা সেট অংশ হিসাবে. 131 00:06:18,280 --> 00:06:20,460 >> তারা ইচ্ছাকৃতভাবে, গুলি করা হয়েছে একটি সাদা পরিপ্রেক্ষিত বিরুদ্ধে. 132 00:06:20,460 --> 00:06:23,380 এবং তাদের কিছু শিক্ষণ আছে কিছু পাঠ্য অঙ্কন ফেলোগণ 133 00:06:23,380 --> 00:06:25,490 overlaid যে পর্দা তাদের পাশ দিয়ে. 134 00:06:25,490 --> 00:06:27,760 তবে অবশ্যই, এই সব যে হয় না বাস্তব জগতে আকর্ষণীয়. 135 00:06:27,760 --> 00:06:30,520 এটি একটি সঙ্গে একটি বক্তৃতা Hall হয় বড় সাদা পর্দা এবং একটি পরিপ্রেক্ষিত. 136 00:06:30,520 --> 00:06:33,330 এবং আমাদের আশ্চর্যজনক উত্পাদন দল সাজানোর সবকিছু সুন্দর চেহারা সম্পর্কে 137 00:06:33,330 --> 00:06:36,620 খুঁজে ফসল তোলা দ্বারা আসলে পরে বা কিছু ওভারলেয়িং 138 00:06:36,620 --> 00:06:37,840 আমরা কি বা না চান. 139 00:06:37,840 --> 00:06:41,560 >> এখন শুধু এই সপ্তাহে প্রেরণা প্রদান করে এবং আপনি সত্যিই, আপনি শেষ পর্যন্ত, যেতে পারেন যেখানে 140 00:06:41,560 --> 00:06:42,560 কম্পিউটার বিজ্ঞান সঙ্গে. 141 00:06:42,560 --> 00:06:44,260 নেই শুধু সমস্যা পরে চার সেট. 142 00:06:44,260 --> 00:06:48,240 কিন্তু অন্য কোর্স বা একটি সম্পূর্ণ পরে পাঠ্যক্রমের আশ্চর্যজনক এটা কি আপনি করতে পারেন 143 00:06:48,240 --> 00:06:51,090 পরিপ্রেক্ষিতে এই দিন কি বিশেষ করে গ্রাফিক্স. 144 00:06:51,090 --> 00:06:53,440 >> আপনি কিছু এই দেখা হয়ে থাকতে পারে অনলাইন কাছাকাছি প্রবাহিত. 145 00:06:53,440 --> 00:06:56,240 কিন্তু আমার জন্য, আমি আপনাকে দেখাতে চাই মাত্র একটি মিনিট দুয়েক, কি একটি আভাস 146 00:06:56,240 --> 00:07:01,890 কম্পিউটার প্রযুক্তি এবং কি সিজিআই, কম্পিউটার গ্রাফিক্স এই দিন করতে পারেন 147 00:07:01,890 --> 00:07:04,510 একটি পরিচিত গানের সঙ্গে এবং সম্ভবত সিনেমা. 148 00:07:04,510 --> 00:07:05,760 >> [সংগীত - Lana DEL RAY, "তরুণ ও সুন্দর] 149 00:07:05,760 --> 00:10:50,270 150 00:10:50,270 --> 00:10:52,470 >> স্পিকার 1: এটি শুধু একটি সামান্য বিট আশ্চর্যজনক, সম্ভবত, ঠিক কিভাবে 151 00:10:52,470 --> 00:10:52,857 omnipresent - 152 00:10:52,857 --> 00:10:57,040 >> [সাধুবাদ] 153 00:10:57,040 --> 00:10:59,230 >> স্পিকার 1: আমি এটা ডাউনলোড. 154 00:10:59,230 --> 00:11:02,920 কিন্তু, আমি মনে করি, সত্যিই আশ্চর্যজনক ঠিক omnipresent সফ্টওয়্যার ও কোড এবং কিভাবে 155 00:11:02,920 --> 00:11:04,230 ভালো সরঞ্জাম সত্যিই. 156 00:11:04,230 --> 00:11:07,685 সুতরাং যে দিক স্বাদ এর যা আপনি যেতে পারেন. 157 00:11:07,685 --> 00:11:10,620 ওহ, কোন অ্যাপ্লায়েন্স আজ. 158 00:11:10,620 --> 00:11:14,640 ওয়েল, যে আসলে দুঃখজনক সময়জ্ঞান এর আমি ঠিক করতে চেষ্টা পয়েন্ট দেওয়া. 159 00:11:14,640 --> 00:11:18,670 >> ঠিক আছে, তাই এর আরম্ভ করা যাক ফিউশন আবার. 160 00:11:18,670 --> 00:11:20,800 পরে আমাকে মনে রাখুন. 161 00:11:20,800 --> 00:11:24,190 ঠিক আছে, এবং আপনি একটি পেয়েছিলাম উচিত যদি আপনি একটি পেতে পারি যদি একটি সরাইয়া হিসাবে ইমেল 162 00:11:24,190 --> 00:11:25,460 যে মত লক্ষ্য করা. 163 00:11:25,460 --> 00:11:29,940 ঠিক আছে, যাতে গত সপ্তাহে প্রত্যাহার আমরা ফিরে ছুলা এই শুরু 164 00:11:29,940 --> 00:11:31,380 পরে স্ট্রিং হিসাবে পরিচিত. 165 00:11:31,380 --> 00:11:34,700 >> স্ট্রিং যে একটি ডাটা টাইপ স্মরণ CS50 লাইব্রেরি ঘোষণা. 166 00:11:34,700 --> 00:11:37,740 এবং এটি প্রশিক্ষণ চাকার অংশ এখন যে বন্ধ করা শুরু হবে. 167 00:11:37,740 --> 00:11:41,280 এটা তাড়াতাড়ি নেভিগেশন একটি দরকারী ধারণা ছিল. 168 00:11:41,280 --> 00:11:43,750 কিন্তু এখন এটা পেতে যাচ্ছে আকর্ষণীয় এবং আপনি আরো শক্তিশালী 169 00:11:43,750 --> 00:11:48,330 আসলে, ফণা নীচে দেখুন একটি স্ট্রিং ঠিক কি হল, আমরা বলেন নি? 170 00:11:48,330 --> 00:11:50,500 >> হ্যাঁ, তাই এটি একটি তথাকথিত গৃহস্থালি * এর. 171 00:11:50,500 --> 00:11:53,860 এবং সেখানে * আছে উল্লেখ করে ঠিকানা কিছু জড়িত. 172 00:11:53,860 --> 00:11:58,690 এবং যাতে আপনি গৃহস্থালি * যখন আপনি ঠিক মানে যার ডাটা টাইপ একটি পরিবর্তনশীল একটি 173 00:11:58,690 --> 00:11:59,290 এখন পয়েন্টার. 174 00:11:59,290 --> 00:12:01,770 সেখানে তারা আছে যে শুধুমাত্র আপনাকে একটা ঘোষণা করা হয় যে মানে 175 00:12:01,770 --> 00:12:03,020 পয়েন্টার তথাকথিত. 176 00:12:03,020 --> 00:12:06,220 এবং যে পয়েন্টার দৃশ্যত যাচ্ছে এর, ঠিকানা সংরক্ষণ 177 00:12:06,220 --> 00:12:07,810 অবশ্যই, একটি গৃহস্থালি. 178 00:12:07,810 --> 00:12:08,960 >> এখন কেন এই জানার জন্য? 179 00:12:08,960 --> 00:12:11,200 ওয়েল, একটি স্ট্রিং কি ফণা নীচে? 180 00:12:11,200 --> 00:12:15,130 ওয়েল, কিছু সময়ের জন্য আমরা বলছে করছি ফণা নীচে একটি স্ট্রিং যে 181 00:12:15,130 --> 00:12:18,460 শুধু H-ই-L-L-O, উদাহরণস্বরূপ. 182 00:12:18,460 --> 00:12:21,585 >> কিন্তু আমরা এই সম্পর্কে সায়ীদ করেছি মূলত, একটি অ্যারের হচ্ছে. 183 00:12:21,585 --> 00:12:25,410 এবং একটি অ্যারের তারপর একটু দেখাবে এই সাথে এই মত আরও 184 00:12:25,410 --> 00:12:26,460 একটি কামড় গ্রহণ. 185 00:12:26,460 --> 00:12:28,710 এবং তারপর আমরা সেখানে যে বলেন করেছি ফিরে এখানে বিশেষ কিছু, 186 00:12:28,710 --> 00:12:31,270 ব্যাকস্ল্যাশ 0, অথবা নাল টারমিনেটর. 187 00:12:31,270 --> 00:12:35,230 >> এই সব সময়, তাই এখানে এই একটি স্ট্রিং হয়েছে. 188 00:12:35,230 --> 00:12:38,320 কিন্তু সত্যিই, একটি স্ট্রিং আসলে একটি ঠিকানা. 189 00:12:38,320 --> 00:12:43,210 হিসাবে আমরা দেখতে পাবেন এবং ঠিকানা, প্রায়ই হয় কনভেনশন দ্বারা 0x সঙ্গে অগ্রে যুক্ত. 190 00:12:43,210 --> 00:12:44,540 0x কি বোঝান না? 191 00:12:44,540 --> 00:12:45,970 কেউ কি জানে? 192 00:12:45,970 --> 00:12:47,320 >> তাই এটি শুধু হেক্সাডেসিমেল মানে. 193 00:12:47,320 --> 00:12:52,360 সুতরাং আপনি PST থেকে, আসলে, প্রত্যাহার হতে পারে 1, আমি বিশ্বাস করি, উষ্ণ আপ এক 194 00:12:52,360 --> 00:12:55,740 প্রশ্ন আসলে সম্পর্কে জিজ্ঞাসা ছাড়াও হেক্সাডেসিমেল স্বরলিপি 195 00:12:55,740 --> 00:12:57,100 বাইনারি এবং দশমিক. 196 00:12:57,100 --> 00:13:00,460 এবং এখানে প্রেরণা যে হেক্সাডেসিমেল সাথে আপনি 16 আছে 197 00:13:00,460 --> 00:13:01,770 আপনার নিষ্পত্তি সংখ্যা. 198 00:13:01,770 --> 00:13:07,900 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, অনুসরণ একটি দ্বারা, বি, সি, ডি, ই, চ. 199 00:13:07,900 --> 00:13:10,430 >> এবং আপনি ঐ সমস্ত আপ গণনা, যদি আপনি 16 মোট পেতে. 200 00:13:10,430 --> 00:13:13,200 তাই এই সাথে এর তুলনা হয় আমরা 10 আছে যেখানে দশমিক, 201 00:13:13,200 --> 00:13:14,690 সংখ্যা, নয়টি 0 মাধ্যমে. 202 00:13:14,690 --> 00:13:17,750 এটি বাইনারি বিপরীত এর আমরা ঠিক 0 এবং 1 আছে যেখানে. 203 00:13:17,750 --> 00:13:21,450 >> কিন্তু আপনি ঠিক করতে পারেন দিনের শেষে একই সংখ্যা প্রতিনিধিত্ব, কিন্তু আছে 204 00:13:21,450 --> 00:13:22,500 কিছুটা অন্যরকম. 205 00:13:22,500 --> 00:13:25,840 এবং হেক্সাডেসিমেল সাধারণ কারণ এটি সক্রিয় আউট - এবং আমরা এই দেখতে পাবেন 206 00:13:25,840 --> 00:13:28,790 পরে অবশ্যই - এমনকি যখন আমরা পেতে প্রেক্ষাপটে ওয়েব প্রোগ্রামিং 207 00:13:28,790 --> 00:13:32,100 HTML এবং রঙ কোড, হেক্সাডেসিমেল চমৎকার. 208 00:13:32,100 --> 00:13:36,390 প্রতিটি অঙ্ক কারণ, দেখা যাচ্ছে পুরোপুরি চার বিট প্রতিনিধিত্ব করে. 209 00:13:36,390 --> 00:13:39,280 চমত্কারভাবে লাইনের তাই এটি শুধু ধরনের আপ আমরা শেষ পর্যন্ত দেখতে পাবেন. 210 00:13:39,280 --> 00:13:44,720 তাই এই হতে পারে Ox123 বা কিছু সেই মতো, বাচক ঠিকানা 123 211 00:13:44,720 --> 00:13:47,050 কোথাও ভিতরে আমার সম্পর্কে কম্পিউটার এর মেমরি. 212 00:13:47,050 --> 00:13:50,600 >> তবে অবশ্যই, কিছু সমস্যা উঠা কারণ এই অন্তর্নিহিত এর 213 00:13:50,600 --> 00:13:51,520 বাস্তবায়ন. 214 00:13:51,520 --> 00:13:55,930 এবং আমি একটি ছুরিকাঘাত গ্রহণ প্রত্যাহার ভালো একটি ফাংশন রূপায়ণকারী - 215 00:13:55,930 --> 00:14:00,260 গত সপ্তাহে ড্যাশ 0 বিন্দু গ তুলনা যে, এটি ছিল মত লাগছিল, যদিও 216 00:14:00,260 --> 00:14:04,270 ঠিক আছে, এটা শুধু তুলনা করা হয়নি দুই স্ট্রিং সঠিকভাবে. 217 00:14:04,270 --> 00:14:07,470 >> আমি দূরে প্রধান নিক্ষিপ্ত করেছি, এবং আমি নিক্ষিপ্ত করেছি দূরে মন্তব্যগুলি শুধুমাত্র উপর ফোকাস 218 00:14:07,470 --> 00:14:08,970 এখানে সুদের যে কোড. 219 00:14:08,970 --> 00:14:10,660 এটা বগী কারণ এবং তা লাল হবে. 220 00:14:10,660 --> 00:14:11,670 কি কারণে? 221 00:14:11,670 --> 00:14:15,890 >> ওয়েল, শীর্ষ আছে আমি যখন ঘোষণা একটি স্ট্রিং, কি সত্যিই ছিল যাচ্ছে 222 00:14:15,890 --> 00:14:17,260 ফণা নীচে? 223 00:14:17,260 --> 00:14:19,530 আচ্ছা, আমাকে নিয়ে যান এখানে পর্দা এবং যে আঁকা. 224 00:14:19,530 --> 00:14:23,230 তাই আমি আবার,, ঘোষণা স্ট্রিং গুলি GetString,. 225 00:14:23,230 --> 00:14:26,640 >> তাই আমি এখন এগিয়ে যান যাচ্ছে এবং করছি সত্যিই এটা কি জন্য গুলি আঁকা. 226 00:14:26,640 --> 00:14:28,590 এখানে একটি বর্গক্ষেত্র হতে যাচ্ছে. 227 00:14:28,590 --> 00:14:30,490 এবং আমি দাবি করতে যাচ্ছি যে 32 বিট এর. 228 00:14:30,490 --> 00:14:32,890 অন্তত এটা সাধারণত হয়, অন্তত CS50 নেভিগেশন 229 00:14:32,890 --> 00:14:34,520 কম্পিউটারের অনেক যন্ত্র. 230 00:14:34,520 --> 00:14:35,980 আমি এটা গণ কল যাচ্ছে না. 231 00:14:35,980 --> 00:14:39,070 >> কিন্তু এখন পুনরাহ্বান যে আমরা GetString, বলা হয়. 232 00:14:39,070 --> 00:14:41,430 সুতরাং GetString, আয়, অবশ্যই, একটি পংক্তি. 233 00:14:41,430 --> 00:14:45,790 H-ই-L-L-O ব্যবহারকারী ধরনের লিখুন যদি স্ট্রিং হ্যালো ফিরে পায়. 234 00:14:45,790 --> 00:14:51,010 এবং স্ট্রিং, আমরা ঠিক যেমন বলেছেন, শেষ আপ কোথাও আপনার কম্পিউটার এর মেমরি 235 00:14:51,010 --> 00:14:53,240 শেষে ব্যাকস্ল্যাশ 0. 236 00:14:53,240 --> 00:14:56,650 আমি অ্যারের মত এই আঁকা করব - বা অক্ষরের সংলগ্ন ব্লক - 237 00:14:56,650 --> 00:14:58,330 আসলে এটা যে. 238 00:14:58,330 --> 00:15:01,790 >> এবং এখন, কি GetString হয় আসলে ফিরে? 239 00:15:01,790 --> 00:15:04,340 কি ফিরে হয়েছে GetString হয়েছে এই সময় সব? 240 00:15:04,340 --> 00:15:07,520 ভাল, আমরা এর আগে সপ্তাহের মধ্যে, বলতে, এটি একটি স্ট্রিং ফেরৎ. 241 00:15:07,520 --> 00:15:10,250 কিন্তু আরো টেকনিক্যালি, কি আছে দৃশ্যত GetString ফিরে? 242 00:15:10,250 --> 00:15:11,610 >> শ্রোতা: একটি ঠিকানা. 243 00:15:11,610 --> 00:15:12,600 >> স্পিকার: 1 একটি ঠিকানা. 244 00:15:12,600 --> 00:15:16,630 বিশেষভাবে এটি ঠিকানা ফেরৎ এটি যাই হোক না কেন খুব প্রথম কামড়. 245 00:15:16,630 --> 00:15:18,830 আমি এক, দুই, তিন ব্যবহার করে রাখা এটি সুবিধাজনক কারণ. 246 00:15:18,830 --> 00:15:21,380 >> এটা প্রথম ঠিকানা ফেরৎ স্ট্রিং অক্ষর. 247 00:15:21,380 --> 00:15:23,510 এবং আমরা গত সপ্তাহে বলেন, যে যথেষ্ট. 248 00:15:23,510 --> 00:15:26,710 আমরা সবসময় চিন্তা করতে পারেন, কারণ যেখানে স্ট্রিং এর শেষে ঠিক দ্বারা 249 00:15:26,710 --> 00:15:30,150 একটি জন্য সঙ্গে, হয়তো, এটা ওভার iterating লুপ বা মত একটি লুপ বা কিছু 250 00:15:30,150 --> 00:15:34,990 যে, শুধু "ব্যাকস্ল্যাশ 0" খুঁজছেন, বিশেষ সেন্টিনেলে অক্ষর. 251 00:15:34,990 --> 00:15:37,220 >> এবং তারপর আমরা জানি যে স্ট্রিং দৈর্ঘ্য হতে হবে - 252 00:15:37,220 --> 00:15:37,980 এই ক্ষেত্রে - 253 00:15:37,980 --> 00:15:38,670 পাঁচ. 254 00:15:38,670 --> 00:15:43,800 সুতরাং টেকনিক্যালি GetString, কি আছে এটি এই ক্ষেত্রে Ox123 ফেরৎ পাঠানো হয়. 255 00:15:43,800 --> 00:15:53,670 এবং টেকনিক্যালি তারপর কি হল যে আমরা s এর ভিতর, Ox123 সঞ্চয়. 256 00:15:53,670 --> 00:15:56,460 দিনের শেষে, এমনকি এই যদিও নতুন ধারণা, পয়েন্টার, তারা হয় 257 00:15:56,460 --> 00:15:57,350 শুধু ভেরিয়েবল. 258 00:15:57,350 --> 00:16:00,440 কিন্তু তারা বিট সংরক্ষণ ঘটতে যে সম্মিলিতভাবে একটি ঠিকানা প্রতিনিধিত্ব. 259 00:16:00,440 --> 00:16:03,700 সুতরাং টেকনিক্যালি তারা পায় গণ সঞ্চিত Ox123 হয়. 260 00:16:03,700 --> 00:16:04,680 >> মানুষ হিসাবে কিন্তু আমরা - 261 00:16:04,680 --> 00:16:06,020 আজ অনওয়ার্ড সহ - 262 00:16:06,020 --> 00:16:09,290 সত্যিই, সাধারণত, যত্ন যাচ্ছে না প্রকৃত ঠিকানা কি 263 00:16:09,290 --> 00:16:10,520 মেমরির কিছু খণ্ড এর. 264 00:16:10,520 --> 00:16:14,040 এটা ঠিক বিস্তারিত কম স্তর আছে বুদ্ধিমত্তা আকর্ষণীয় হতে. 265 00:16:14,040 --> 00:16:15,440 তাই আমি এই পূর্বাবস্থা করতে যাচ্ছি. 266 00:16:15,440 --> 00:16:19,810 এর পরিবর্তে, আরো উচ্চ পর্যায়ের, শুধু বলে যে আমরা পয়েন্টার বিষয়ে কথা বলছি যখন 267 00:16:19,810 --> 00:16:22,170 আমি আরো আঁকতে চলেছি conveys যে ব্যবহারকারী বান্ধব তীর 268 00:16:22,170 --> 00:16:26,060 একই ধারণা এবং দূরে abstracts প্রকৃত কি বিবরণ 269 00:16:26,060 --> 00:16:27,700 অন্তর্নিহিত ঠিকানা. 270 00:16:27,700 --> 00:16:33,290 >> আমরা কোড ফিরে যান এখন যদি, কি আমরা স্ট্রিং T থাকে তাহলে গত সপ্তাহে ঘটেছে 271 00:16:33,290 --> 00:16:34,510 GetString সমান? 272 00:16:34,510 --> 00:16:38,630 হ্যালো ভাল, আমি আবার যদি, টাইপ করুন আমি পেতে যাচ্ছি এই সময় 273 00:16:38,630 --> 00:16:40,460 মেমরি অন্য অঞ্চলে. 274 00:16:40,460 --> 00:16:44,820 H-ই-L-L-O ব্যাকস্ল্যাশ 0. 275 00:16:44,820 --> 00:16:48,320 >> কিন্তু আমি GetString বলা হয় কারণ একটি দ্বিতীয় সময় - 276 00:16:48,320 --> 00:16:51,100 এবং আমি এ খুঁজছেন থেকে এই জানি GetString, সোর্স কোড - এমনকি 277 00:16:51,100 --> 00:16:54,350 এটা হ্যালো ছিল coincidental যদিও দুইবার টাইপ করা, GetString, নয় 278 00:16:54,350 --> 00:16:55,890 নিখুত করার চেষ্টা করে যাচ্ছে এবং চতুর হতে. 279 00:16:55,890 --> 00:16:58,550 এটা ঠিক অন্য খণ্ড পেতে যাচ্ছে যা কম্পিউটার থেকে মেমরি 280 00:16:58,550 --> 00:16:59,640 অন্য ঠিকানাতে হতে যাচ্ছে. 281 00:16:59,640 --> 00:17:02,330 ইচ্ছামত শুধু 456 এর কথা বলা যাক. 282 00:17:02,330 --> 00:17:04,079 >> এবং তারপর কি এটি ফিরে যাচ্ছে? 283 00:17:04,079 --> 00:17:08,030 এটা 456 ফিরে যাচ্ছে এবং T মধ্যে এটি সংরক্ষণ. 284 00:17:08,030 --> 00:17:12,010 তাই কি সত্যিই, নেভিগেশন যাচ্ছে বাম দিকে আমি অন্য খণ্ড আছে 285 00:17:12,010 --> 00:17:14,260 মেমরি, 32 বিট সাধারণত. 286 00:17:14,260 --> 00:17:16,720 এবং সেখানে Ox456 যেতে যাচ্ছে. 287 00:17:16,720 --> 00:17:20,140 কিন্তু আবার, আমি এইসব আগ্রহী না করছি আর বিশেষ সংখ্যা. 288 00:17:20,140 --> 00:17:23,069 আমি শুধু abstractly যাচ্ছি একটি তীর হিসাবে এটি আঁকা. 289 00:17:23,069 --> 00:17:25,202 >> তাই এটি এখন একটি নতুন ব্যাখ্যা হয়. 290 00:17:25,202 --> 00:17:28,735 কিন্তু এটা যে একই সঠিক ধারণা সব এই সময় ঘটছে হয়েছে. 291 00:17:28,735 --> 00:17:33,150 তাই কারণ তারপর, যে এই প্রথম তুলনা সংস্করণ বগী ছিল 292 00:17:33,150 --> 00:17:34,480 গত সপ্তাহে কেন? 293 00:17:34,480 --> 00:17:38,000 গণ সমান সমান হলে আপনাকে যা করতে হবে যখন আপনি সত্যিই কি T 294 00:17:38,000 --> 00:17:40,550 ফণা তুলনা নীচে? 295 00:17:40,550 --> 00:17:41,910 >> আপনি ঠিকানাগুলি তুলনা করছি. 296 00:17:41,910 --> 00:17:47,950 এবং শুধু intuitively, স্পষ্টত, Ox123 সমান Ox456 যাচ্ছে না. 297 00:17:47,950 --> 00:17:49,380 ঐ সংখ্যার, যারা বিট শুধু ভিন্ন. 298 00:17:49,380 --> 00:17:53,220 >> তাই ধারাবাহিকভাবে, গত সপ্তাহে বলেন আপনি বিভিন্ন জিনিষ টাইপ করুন, এমনকি যদি 299 00:17:53,220 --> 00:17:55,360 শব্দ ধারণকৃত একই ছিল. 300 00:17:55,360 --> 00:17:58,770 সুতরাং আমরা এই স্থির করা. 301 00:17:58,770 --> 00:18:00,120 Layman এর পদ, ফিক্স কি ছিল? 302 00:18:00,120 --> 00:18:02,110 >> শ্রোতা: একটি ফাংশন ব্যবহার করুন. 303 00:18:02,110 --> 00:18:02,870 >> স্পিকার: 1 একটি ফাংশন ব্যবহার করুন. 304 00:18:02,870 --> 00:18:05,190 অথবা তারা স্পষ্টভাবে জড়িত হয়, কিন্তু কি একটি ফাংশন ব্যবহার করার জন্য? 305 00:18:05,190 --> 00:18:05,962 >> শ্রোতা: স্ট্রিং তুলনা করার. 306 00:18:05,962 --> 00:18:07,390 >> স্পিকার: 1 স্ট্রিং তুলনা করার. 307 00:18:07,390 --> 00:18:11,030 সুতরাং এখানে মৌলিক সমস্যা ছিল আমি বিবেচনা করে যে 308 00:18:11,030 --> 00:18:15,870 দ্বারা সংজ্ঞায়িত করা স্ট্রিং গুণ তাদের ঠিকানা তুলনা. 309 00:18:15,870 --> 00:18:18,540 এবং অবশ্যই যে এখন একবার শুধু মূক এর আপনি কি ঘটছে বুঝতে 310 00:18:18,540 --> 00:18:19,510 ফণা নীচে. 311 00:18:19,510 --> 00:18:23,270 সত্যিই দেখতে স্ট্রিং তুলনা করতে হলে তারা যে একটি মানবিক ভাবে সমান করছি 312 00:18:23,270 --> 00:18:26,680 দুই স্ট্রিং সমান হতে বিবেচনা করবে আমরা তাদের চরিত্র তুলনা করতে হবে 313 00:18:26,680 --> 00:18:28,070 অক্ষরের জন্য অক্ষর. 314 00:18:28,070 --> 00:18:30,020 >> এখন আমি কাজ করতে পারে আছে এই খুব tediously. 315 00:18:30,020 --> 00:18:32,240 কিন্তু familiarly, আমরা লুপ জন্য একটি ব্যবহার করে. 316 00:18:32,240 --> 00:18:36,050 এবং মাত্র গুলি বন্ধনী তুলনা T বন্ধনী তোমার বিরুদ্ধে আমি. 317 00:18:36,050 --> 00:18:39,590 T বন্ধনী বিরুদ্ধে গণ বন্ধনী আমি প্লাস 1 আমি প্লাস 1 টি, এবং তাই ঘোষণা, ভিতরে 318 00:18:39,590 --> 00:18:40,580 লুপ কিছু. 319 00:18:40,580 --> 00:18:44,950 এবং আমি যে কোনো দুটি অক্ষর স্পট যদি পার্থক্য, অথবা আমি ooh বুঝতে পারি যে, যদি গুলি করা হয় 320 00:18:44,950 --> 00:18:48,410 টন আর T তুলনায় খাটো বা দীর্ঘতর আমি অবিলম্বে মিথ্যা বলতে পারেন 321 00:18:48,410 --> 00:18:49,390 তারা একই না. 322 00:18:49,390 --> 00:18:55,370 >> কিন্তু আমি গুলি এবং টন মাধ্যমে পেতে এবং বলে যদি একই, একই, একই, একই, একই, শেষ 323 00:18:55,370 --> 00:18:58,520 উভয় স্ট্রিং, আমি বলতে পারেন সত্য, তারা সমান. 324 00:18:58,520 --> 00:19:01,040 ওয়েল, সৌভাগ্যক্রমে, বছর আগে কেউ আমাদের জন্য যে কোড লেখেন. 325 00:19:01,040 --> 00:19:03,790 >> এবং তারা এটি StrComp বলা স্ট্রিং তুলনা জন্য. 326 00:19:03,790 --> 00:19:11,900 এবং এটি একটি সামান্য পাল্টা যদিও যারা হলে স্বজ্ঞাত, StrComp 0 ফেরৎ 327 00:19:11,900 --> 00:19:14,520 দুই স্ট্রিং, গুলি এবং টন একই. 328 00:19:14,520 --> 00:19:18,090 কিন্তু এটি ঋণাত্মক মূল্য ফেরৎ যদি গুলি অথবা টন বর্ণানুক্রমে আগে আসা উচিত 329 00:19:18,090 --> 00:19:20,610 এটা আসতে হবে যদি ইতিবাচক মান টন বর্ণানুক্রমে পরে. 330 00:19:20,610 --> 00:19:24,030 >> আপনি কি কখনও কিছু বাছাই করতে চান, যদি তাই হয়, এটি StrComp দরকারী যে দেখা যাচ্ছে. 331 00:19:24,030 --> 00:19:26,660 এটা ঠিক বলে না, কারণ কোন বা হ্যাঁ, সমান না. 332 00:19:26,660 --> 00:19:30,440 এটা আপনার ক্রম একটা ধারনা দেয় একটি অভিধান যথাসাধ্য না. 333 00:19:30,440 --> 00:19:33,770 StrComp সুতরাং, গুলি কমা T সমান 0 মানে সমান যে 334 00:19:33,770 --> 00:19:35,200 স্ট্রিং সত্যিই সমান. 335 00:19:35,200 --> 00:19:38,680 যে কেহ এই ফাংশন লিখেছে, কারণ বছর আগে সম্ভবতঃ লুপ জন্য একটি ব্যবহৃত 336 00:19:38,680 --> 00:19:42,840 যে মত বা যখন একটি লুপ বা কিছু আবার অক্ষরের একীভূত 337 00:19:42,840 --> 00:19:45,270 এবং আবার এবং আবার. 338 00:19:45,270 --> 00:19:47,300 >> কিন্তু সমস্যা দুটি এখানে পড়েছিল. 339 00:19:47,300 --> 00:19:48,750 এই copy0.c ছিল. 340 00:19:48,750 --> 00:19:51,680 এবং লাল দুটি হল এটি ভ্রান্ত কারণ. 341 00:19:51,680 --> 00:19:52,800 এবং আমরা এখানে কি? 342 00:19:52,800 --> 00:19:54,310 ওয়েল, প্রথম আমি GetString বলা হয়. 343 00:19:54,310 --> 00:19:56,255 এবং আমি গুলি ফেরত মান সংরক্ষণ করা হয়. 344 00:19:56,255 --> 00:20:00,260 সুতরাং যে বেশ অনেক হিসাবে একই ছবি এই উপরের অংশ. 345 00:20:00,260 --> 00:20:01,490 >> কিন্তু কি যে পরে আসে? 346 00:20:01,490 --> 00:20:04,980 আচ্ছা, আমাকে এগিয়ে যান এবং পরিত্রাণ পেতে এই পুরো গুচ্ছ. 347 00:20:04,980 --> 00:20:09,650 আমরা যেখানে আমরা শুধু সময় গুটিয়ে করব এখন সঙ্গে সামঞ্জস্যপূর্ণ যা গুলি আছে, 348 00:20:09,650 --> 00:20:10,940 লাইন আপ সেখানে এক. 349 00:20:10,940 --> 00:20:11,400 >> আমি চেক করুন. 350 00:20:11,400 --> 00:20:13,450 গণ সমান যদি 0 সমান. 351 00:20:13,450 --> 00:20:18,670 এখন, একটি দ্রুত পার্শ্ব নোট, যখন GetString, 0 ফিরে হতে পারে? 352 00:20:18,670 --> 00:20:19,580 পর্যাপ্ত মেমরি নেই না. 353 00:20:19,580 --> 00:20:19,880 রাইট? 354 00:20:19,880 --> 00:20:22,310 >> এটি এই ঘটতে যাচ্ছে যে বিরল অবশ্যই যে কোন কম্পিউটারে 355 00:20:22,310 --> 00:20:24,740 অথবা megs শত শত পেয়েছিলাম উপস্থিত RAM-র, এমনকি যোগাড়. 356 00:20:24,740 --> 00:20:27,080 কিন্তু তত্ত্ব, ফিরে পারে 0, বিশেষত যদি 357 00:20:27,080 --> 00:20:28,080 ব্যবহারকারী সহযোগিতা না. 358 00:20:28,080 --> 00:20:31,640 আপনি না চাই সাজা উপায় আছে ইনপুট এবং কিছু কৌতুক 359 00:20:31,640 --> 00:20:34,100 ফিরে মধ্যে GetString কার্যকরভাবে 0. 360 00:20:34,100 --> 00:20:35,470 >> সুতরাং এটা যে চেক করতে যাচ্ছে. 361 00:20:35,470 --> 00:20:39,430 আপনি যদি কোনো শুরু করেছেন কারণ যদি ইতিমধ্যে, সেগমেন্টেশন ফল্ট পেতে - 362 00:20:39,430 --> 00:20:42,280 যা সম্ভবত একটি উৎস হয়েছে কিছু হতাশা - 363 00:20:42,280 --> 00:20:46,150 যারা প্রায় সবসময় ফলাফল মেমরি সংক্রান্ত ত্রুটির. 364 00:20:46,150 --> 00:20:50,440 একরকম আপনি একটি বিষয়ে আপ তছনছ আপনি বুঝতে পারছি না, এমনকি যদি পয়েন্টার, 365 00:20:50,440 --> 00:20:51,530 একটি পয়েন্টার ছিল. 366 00:20:51,530 --> 00:20:55,260 সুতরাং আপনি সেগমেন্টেশন প্রবর্তিত হতে পারে ব্যবহার করে সপ্তাহে এক হিসাবে তাড়াতাড়ি ফল্ট 367 00:20:55,260 --> 00:21:02,100 লুপ বা একটি যখন জন্য একটি ভালো কিছু অতিদূরে যাচ্ছে লুপ এবং একটি অ্যারের 368 00:21:02,100 --> 00:21:05,900 কিছু অ্যারের সীমা অতীতের যে আপনি সপ্তাহে দুটি ঘোষণা 369 00:21:05,900 --> 00:21:06,690 বিশেষ. 370 00:21:06,690 --> 00:21:09,220 >> এমনকি আপনি সমস্যা এটি সম্পন্ন হতে পারে ব্রেকআউট সঙ্গে চার সেট. 371 00:21:09,220 --> 00:21:12,910 আপনি সম্ভবত দেখা যায় না যদিও জন্য ডিস্ট্রিবিউশন কোড যে কোন বড় 372 00:21:12,910 --> 00:21:17,410 ব্রেকআউট, এটি সক্রিয় আউট যে GRect এবং GOval এবং অন্যান্য ধরনের জিনিস, 373 00:21:17,410 --> 00:21:19,650 যারা আসলে পয়েন্টার হয় ফণা নীচে. 374 00:21:19,650 --> 00:21:23,430 >> আমাদের মত কিন্তু স্ট্যানফোর্ড, hides সাজানোর যে বিস্তারিত অন্তত লাইব্রেরির জন্য 375 00:21:23,430 --> 00:21:26,540 উদ্দেশ্য, অনেক আমরা করতে চাই স্ট্রিং এবং গৃহস্থালি * জন্য. 376 00:21:26,540 --> 00:21:30,060 কিন্তু GRect এবং GOval এবং যারা সব আপনি না হয় অথবা কিছু ব্যবহার করা হবে 377 00:21:30,060 --> 00:21:32,630 এই সপ্তাহে পরিণামে হয় মেমরি অ্যাড্রেস. 378 00:21:32,630 --> 00:21:33,650 আপনি শুধু এটা জানি না. 379 00:21:33,650 --> 00:21:37,240 >> সুতরাং, সম্ভবত, তারপর বিস্ময়কর না আপনি কিছু ওভার ট্রিপ হতে পারে 380 00:21:37,240 --> 00:21:38,580 সেগমেন্টেশন ফল্ট. 381 00:21:38,580 --> 00:21:41,290 কিন্তু এখন এখানে আকর্ষণীয় কি আমরা কি 0 পরীক্ষা পরে যদি 382 00:21:41,290 --> 00:21:43,460 স্ট্রিং T গুলি পায়. 383 00:21:43,460 --> 00:21:44,690 আচ্ছা, আমাকে T ঘোষণা করা যাক. 384 00:21:44,690 --> 00:21:47,730 আমি একটি বর্গক্ষেত্র আঁকতে হিসাবে এটা করতে যাচ্ছি 32 বিট এটি কল. 385 00:21:47,730 --> 00:21:49,740 এবং তারপর আমি কাজ করতে যাচ্ছি গুলি পায়. 386 00:21:49,740 --> 00:21:51,130 >> ওয়েল, যে কি মানে? 387 00:21:51,130 --> 00:21:53,280 ওয়েল, এটা মনে হয় একটু কঠিন এটা জিনিস ছবি. 388 00:21:53,280 --> 00:21:55,025 কিন্তু এখানে আমার মনে হয় x এর ভিতরে কি? 389 00:21:55,025 --> 00:21:59,430 এই পরিবর্তনশীল ভিতরে আক্ষরিক কি? 390 00:21:59,430 --> 00:22:01,500 মান Ox123. 391 00:22:01,500 --> 00:22:05,815 >> ঠিক তাই আমি বলতে যখন স্ট্রিং T গুলি পায়, যে আক্ষরিক সংখ্যা নিতে মানে 392 00:22:05,815 --> 00:22:10,070 গুলি, যা Ox123 এবং এটি Ox123 করা. 393 00:22:10,070 --> 00:22:13,740 অথবা pictorially, যদি আমি ধরনের বিমূর্ত দূরে যে বিস্তারিত থেকে এটি আছে 394 00:22:13,740 --> 00:22:16,600 আক্ষরিক করছেন প্রভাব এই হিসাবে ভাল. 395 00:22:16,600 --> 00:22:22,110 >> সুতরাং এখন, গত সপ্তাহে ফিরে মনে যখন আমরা পুঁজিবাদী টি আমি রইল 396 00:22:22,110 --> 00:22:23,800 টি বন্ধনী 0 করেনি. 397 00:22:23,800 --> 00:22:27,150 ওয়েল, এটা টি বন্ধনী 0, যদিও পয়েন্টার, আপনি এটা হিসাবে যদিও বিবেচনা করতে পারেন 398 00:22:27,150 --> 00:22:29,220 এটি একটি বর্গাকার সহ, একটি অ্যারে বন্ধনী স্বরলিপি. 399 00:22:29,220 --> 00:22:31,550 >> তাই যেখানে টি বন্ধনী 0? 400 00:22:31,550 --> 00:22:32,990 ওয়েল, এটা H এর. 401 00:22:32,990 --> 00:22:36,800 এবং তাই আমরা কোড যে লাইন ব্যবহার করেন তখন, যে সি type.h যা দুই ঊর্ধ্ব, 402 00:22:36,800 --> 00:22:38,460 হেডার ফাইল, যে যেখানে এটি ঘোষিত হচ্ছে. 403 00:22:38,460 --> 00:22:44,410 আপনি যদি এই এইচ capitalizing কিন্তু করছি অবশ্যই, যে যে একই সঠিক H এর 404 00:22:44,410 --> 00:22:46,540 s এর ভিতরে, তাই কথা বলতে. 405 00:22:46,540 --> 00:22:51,930 তাই এখন আপনি বা পরিবর্তিত হয়েছে মূলধনী মূল এবং উভয় 406 00:22:51,930 --> 00:22:53,120 কপি তথাকথিত. 407 00:22:53,120 --> 00:22:56,620 আপনি একটি কপি না কারণ একটি মানবিক এটা হতে চান যে উপায়. 408 00:22:56,620 --> 00:22:59,710 >> সুতরাং এখানে ফিক্স, কি ছিল copy1.c গত সপ্তাহে? 409 00:22:59,710 --> 00:23:03,070 410 00:23:03,070 --> 00:23:05,580 ফাংশন, তাই আসলে আমরা পারা স্ট্রিং কপি করুন. 411 00:23:05,580 --> 00:23:08,700 এবং মৌলিকভাবে, আমরা কি করতে হবে স্ট্রিং কপি করার জন্য কি করতে চান? 412 00:23:08,700 --> 00:23:12,070 >> ভাল, এখানে এই সবুজ সংস্করণে আমি এটা মোটামুটি নিম্ন স্তরের কাজ করতে যাচ্ছেন. 413 00:23:12,070 --> 00:23:14,260 ফাংশন আসলে আছে তারা এই ব্যাপারে সাহায্য করতে পারে. 414 00:23:14,260 --> 00:23:17,710 কিন্তু অধিকাংশ মৌলিক এক, এবং সবচেয়ে পরিচিত এক, অন্তত, শীঘ্রই হবে 415 00:23:17,710 --> 00:23:19,600 আমাদের পরিচিত, হল - 416 00:23:19,600 --> 00:23:21,910 তাই প্রথম সারির এক সবুজ কোড এখন. 417 00:23:21,910 --> 00:23:23,970 >> আমি শুধু গৃহস্থালি * হিসাবে গণ rewrote. 418 00:23:23,970 --> 00:23:25,250 কোন কার্যকরী আছে সেখানে পার্থক্য. 419 00:23:25,250 --> 00:23:28,790 আমি CS50 লাইব্রেরি দূরে ছুড়ে ফেলে এবং আমি এটি একটি গৃহস্থালি * কি এটা আহ্বান করছি. 420 00:23:28,790 --> 00:23:31,640 >> এখনই ডট, বিন্দু, বিন্দু, কারণ না কিছু ত্রুটি পরীক্ষা করা 421 00:23:31,640 --> 00:23:33,200 আবার কথা বলার জন্য আকর্ষণীয়. 422 00:23:33,200 --> 00:23:34,710 তাই এখন T ঘোষিত হয়. 423 00:23:34,710 --> 00:23:35,780 এটা খুবই একটি গৃহস্থালি * হয়. 424 00:23:35,780 --> 00:23:38,280 তাই আমি একটি সামান্য বর্গ সৃষ্টি আগে যেমন পর্দা. 425 00:23:38,280 --> 00:23:41,870 >> কিন্তু ডান দিকে, malloc, আমরা মেমরি বরাদ্দ করা হয়. 426 00:23:41,870 --> 00:23:44,130 তাই মেমরি কিছু খণ্ড বরাদ্দ. 427 00:23:44,130 --> 00:23:48,830 এবং আসলে আমরা কত বাইট কাজ বরাদ্দ করতে চান, এটা মনে হচ্ছে না? 428 00:23:48,830 --> 00:23:50,340 >> ওয়েল, s এর স্ট্রিং দৈর্ঘ্য. 429 00:23:50,340 --> 00:23:52,310 এটা হ্যালো যে, তাই যদি পাঁচ হতে যাচ্ছে. 430 00:23:52,310 --> 00:23:53,950 আমরা H-ই-L-L-O বলবো. 431 00:23:53,950 --> 00:23:55,090 পাঁচ বাইট তাই. 432 00:23:55,090 --> 00:23:57,960 >> কিন্তু তারপর 1 প্লাস, কেন 1? 433 00:23:57,960 --> 00:23:58,830 0 অক্ষর. 434 00:23:58,830 --> 00:24:03,640 আমরা এই লোক জন্য রুম ছেড়ে না যদি আমরা ঘটনাক্রমে একটি অবস্থা তৈরি হতে পারে 435 00:24:03,640 --> 00:24:05,600 স্ট্রিং যেখানে H-ই-L-L-O. 436 00:24:05,600 --> 00:24:08,470 এবং তারপর পরবর্তী সময় GetString, হয় , বলা হয় এবং আমি উদাহরণস্বরূপ, টাইপ 437 00:24:08,470 --> 00:24:14,020 ডেভিড, ডি-A-V-I-D, কম্পিউটার যাচ্ছে গণ আসলে মনে করি যে আপনি 438 00:24:14,020 --> 00:24:18,900 H-ই-L-L-O-D-A-V-I-D আছে, কারণ যারা শব্দের মধ্যে বিরতি নেই. 439 00:24:18,900 --> 00:24:19,810 >> তাই আমরা যে বিরতি প্রয়োজন. 440 00:24:19,810 --> 00:24:20,720 সুতরাং আমরা পাঁচ চাই না. 441 00:24:20,720 --> 00:24:22,100 আমরা ছয় বাইট চান. 442 00:24:22,100 --> 00:24:23,110 >> এবং বাইট আমি বলতে. 443 00:24:23,110 --> 00:24:25,220 কিন্তু গৃহস্থালির কাজ সত্যিই সময় সাইজ এর. 444 00:24:25,220 --> 00:24:28,040 টেকনিক্যালি গৃহস্থালির প্রায় সবসময় একটি একক বাইট. 445 00:24:28,040 --> 00:24:31,030 >> কিন্তু শুধু আমাদের কোড পোর্টেবল করতে, তাই এটি কাজ করে, যাতে কথা বলতে 446 00:24:31,030 --> 00:24:33,750 বিভিন্ন কম্পিউটার, এমনকি তারা যদি পারে নীচে কিছুটা আলাদা হতে 447 00:24:33,750 --> 00:24:36,590 ফণা, আমি জেনেরিক যাচ্ছি গৃহস্থালির কাজ বলে মাপ যাতে 448 00:24:36,590 --> 00:24:37,660 আমার কোড সবসময় কাজ করে. 449 00:24:37,660 --> 00:24:40,610 এবং আমি এটা ঠিক কম্পাইল করতে হবে না আমি আমার কম্পিউটার আপগ্রেড করার জন্য বা ব্যবহার করার জন্য, কারণ 450 00:24:40,610 --> 00:24:42,140 কিছু ভিন্ন প্ল্যাটফর্ম. 451 00:24:42,140 --> 00:24:45,300 >> তাই আমি 6 বার আকার পেয়েছেন 1 হতে হবে, যা একটি গৃহস্থালি. 452 00:24:45,300 --> 00:24:47,440 সুতরাং যে মানে malloc পারে আমার সম্পর্কে ছয় বাইট দিতে. 453 00:24:47,440 --> 00:24:49,140 আসলে এরকম যে কি? 454 00:24:49,140 --> 00:24:52,810 আচ্ছা, আমাকে এখানে সময় ফিরে পাকানো যাক আমরা বিবরণ আছে যেখানে আপনি. 455 00:24:52,810 --> 00:24:57,620 >> আমি এখানে ফিরে যান, তাই যদি আমি ঘোষণা করেছি T নামক একটি গৃহস্থালি *. 456 00:24:57,620 --> 00:25:00,280 আমি এখন ছয় বাইট জন্য malloc বলা করেছি. 457 00:25:00,280 --> 00:25:06,400 এবং এখন আমি ঐ ছয় আঁকা যাচ্ছে না শুধু অ্যারের আগে চাই বাইট. 458 00:25:06,400 --> 00:25:10,570 কিন্তু আমি আসলে কি জানেন না এই অ্যারে ভিতরে. 459 00:25:10,570 --> 00:25:14,640 >> আপনি মেমরি বরাদ্দ করা হলে এটি সক্রিয় আউট যে আপনি কি কিছু আছে যে বিশ্বাস করতে পারে না 460 00:25:14,640 --> 00:25:15,810 সেখানে পরিচিত মান. 461 00:25:15,810 --> 00:25:18,400 এটা কিছু ব্যবহৃত হয়ে থাকতে পারে অন্যথায়, কিছু অন্যান্য ফাংশন, কিছু অন্যান্য 462 00:25:18,400 --> 00:25:19,630 আপনি লিখেছেন যে কোড লাইন. 463 00:25:19,630 --> 00:25:22,870 সুতরাং আমরা সাধারণত এইসব আবর্জনা ডাকবো মান হিসাবে, সম্ভবত, তাদের আঁকা 464 00:25:22,870 --> 00:25:26,170 প্রশ্ন চিহ্ন, শুধু ইঙ্গিত যে আমরা সেখানে আসলে কি জানি না. 465 00:25:26,170 --> 00:25:30,390 এবং যে এতক্ষণ আমরা কোন বড় চুক্তি যারা মুছে ফেলা যথেষ্ট স্মার্ট 466 00:25:30,390 --> 00:25:34,550 আবর্জনা সংখ্যার মান বা আমরা যত্ন সম্পর্কে যে অক্ষর. 467 00:25:34,550 --> 00:25:36,340 >> তাই এই ক্ষেত্রে আমি কি করতে যাচ্ছি? 468 00:25:36,340 --> 00:25:38,670 ওয়েল, আমার লাইন কোড পরবর্তী, আমি চার আছে. 469 00:25:38,670 --> 00:25:41,350 আমি 0 পেতে int, এন পায় s এর স্ট্রিং দৈর্ঘ্য. 470 00:25:41,350 --> 00:25:42,750 লুপ জন্য তাই একটা পরিচিত. 471 00:25:42,750 --> 00:25:45,875 আমি কম বা N সমান যা সাধারণত উপরে থাকে. 472 00:25:45,875 --> 00:25:47,500 >> কিন্তু এই সময় এটি ইচ্ছাকৃত নয়. 473 00:25:47,500 --> 00:25:51,890 আমি + + ', এবং তারপর আমি সহজভাবে করতে T বন্ধনী আমি গুলি পায়. 474 00:25:51,890 --> 00:25:56,320 আমার ছবি এ ভালো দেখায় কারণ T সঞ্চিত এই মুহূর্তে হল, 475 00:25:56,320 --> 00:25:59,530 মেমরি যে র্যান্ডম খণ্ড ঠিকানা যার মান জানা যায় না. 476 00:25:59,530 --> 00:26:03,030 কিন্তু যত তাড়াতাড়ি আমি T বন্ধনী মতো আমাকে এখানে রাখে 0. 477 00:26:03,030 --> 00:26:07,430 >> আপ কি আছে টানা পেয়ে শেষ? 478 00:26:07,430 --> 00:26:08,740 আমরা জ নির্বাণ আপ শেষ. 479 00:26:08,740 --> 00:26:11,170 যে গুলি বন্ধনী 0 কি কারণ. 480 00:26:11,170 --> 00:26:14,300 জন্য এবং তারপর একই জিনিস ই, এবং L, এবং L, এবং হে. 481 00:26:14,300 --> 00:26:17,930 >> N, কেন আমি মাধ্যমে যেতে হয়নি N একটি সমান? 482 00:26:17,930 --> 00:26:19,200 0 চরিত্রের কারণে. 483 00:26:19,200 --> 00:26:23,580 তাই ঠিক, তারপর পরিষ্কার হবে, যদি আমি আসলে আপনি মুছে যাই হোক না কেন এই আবর্জনা 484 00:26:23,580 --> 00:26:28,870 মান এবং তারপর আসলে আঁকা আমি আশা, এই গুলি বন্ধনী 1, 2, হয় 485 00:26:28,870 --> 00:26:32,440 3, 4, প্লাস যে trailing এর নতুন অক্ষর. 486 00:26:32,440 --> 00:26:36,080 >> তাই এখন আমরা বিন্দু গত অব্যাহত যদি এই সঠিক সংস্করণ মধ্যে বিন্দু, বিন্দু 487 00:26:36,080 --> 00:26:41,930 এবং বড় হাতের অক্ষরে T বন্ধনী 0 আমি চাই, এর অবশ্যই, capitalizing করা ঠিক এই 488 00:26:41,930 --> 00:26:47,050 এখানে লোক, যা ধারণার দিক থেকে, পরিণামে উদ্দেশ্য ছিল. 489 00:26:47,050 --> 00:26:48,040 সুতরাং যে সব পয়েন্টার. 490 00:26:48,040 --> 00:26:51,430 >> এবং আপনি সপ্তাহের জন্য তাদের ব্যবহার করছি এখন স্ট্রিং প্রেক্ষাপটে. 491 00:26:51,430 --> 00:26:53,530 কিন্তু ফণা নীচে তারা একটু বেশি জটিল. 492 00:26:53,530 --> 00:26:57,520 কিন্তু আপনি এই তাদের চিন্তা যদি সচিত্র ফর্ম তারা যে আমি উত্থাপন 493 00:26:57,520 --> 00:27:01,720 তারা সম্ভবত যে সব ভয়ের না প্রথম প্রথম নজরে মনে হতে পারে, 494 00:27:01,720 --> 00:27:04,730 বিশেষ করে এই ধরনের নতুন বাক্য গঠন সঙ্গে. 495 00:27:04,730 --> 00:27:07,290 পয়েন্টার উপর কোন প্রশ্ন, স্ট্রিং, বা চিহ্ন? 496 00:27:07,290 --> 00:27:07,580 হ্যাঁ? 497 00:27:07,580 --> 00:27:09,252 >> শ্রোতা: আপনি ফিরে যেতে পারেন [শ্রবণাতীত] আপনি? 498 00:27:09,252 --> 00:27:10,502 >> স্পিকার 1: শিওর. 499 00:27:10,502 --> 00:27:14,058 500 00:27:14,058 --> 00:27:19,525 >> শ্রোতা: আপনার শেষ আসা সুতরাং কিভাবে লাইন, আপনি একটি * T লাইন থাকে না 501 00:27:19,525 --> 00:27:21,513 এবং একটি * গুলি লাইন? 502 00:27:21,513 --> 00:27:23,004 আপনি রেফারেন্স আছে কি না - 503 00:27:23,004 --> 00:27:24,640 >> স্পিকার: 1 আহ, সত্যিই একটি ভাল প্রশ্ন. 504 00:27:24,640 --> 00:27:26,800 কেন আমি একটি * T এবং একটি * গুলি না? 505 00:27:26,800 --> 00:27:30,340 কারণ আমাদের মত সংক্ষেপে, গত সপ্তাহে, ফাংশন অদলবদল, আমি যে তখন কি বলেছেন 506 00:27:30,340 --> 00:27:33,350 আপনি একটি পয়েন্টার মানে পেয়েছেন আমরা কি হিসাবে আপনি সেখানে যেতে যা 507 00:27:33,350 --> 00:27:36,590 শারীরিকভাবে মঞ্চে, আপনি আসলে ছিল তারকা অপারেটর ব্যবহার করুন. 508 00:27:36,590 --> 00:27:40,570 >> এটি সক্রিয় আউট যে এই বর্গাকার বন্ধনী- স্বরলিপি আমরা অন্বিত ডাকবো কি 509 00:27:40,570 --> 00:27:44,190 শুধু একটি সেক্সি ভাবে, যা চিনি, জন্য এটি এর সাঁটে লেখার স্বরলিপি বলছে 510 00:27:44,190 --> 00:27:45,950 আপনি বর্ণনা করছি ঠিক কি. 511 00:27:45,950 --> 00:27:49,385 কিন্তু এটা একটু আরও বেশি ধারণাসম্পন্ন এর. 512 00:27:49,385 --> 00:27:53,510 এবং এর ফলে ঝুঁকি এই অধিক বলে মনে হচ্ছে এটা করার প্রয়োজন আর জটিল, 513 00:27:53,510 --> 00:27:56,990 কি সত্যিই এখানে যাচ্ছে নিম্নোক্ত - 514 00:27:56,990 --> 00:28:01,450 আমি মানে * T বলে যে যদি আপনি যান ঠিকানা T মধ্যে সংরক্ষণ করা হয়. 515 00:28:01,450 --> 00:28:04,350 >> তাই আক্ষরিক, সংরক্ষণ T হলে যে ঘঃ ঠিকানা 516 00:28:04,350 --> 00:28:07,300 প্রাথমিকভাবে, * T উপায় এখানে যান. 517 00:28:07,300 --> 00:28:10,730 এখন, T বন্ধনী 0 মানে কি? 518 00:28:10,730 --> 00:28:11,560 একই সঠিক জিনিস. 519 00:28:11,560 --> 00:28:13,510 এটি শুধু একটি সামান্য আরো ব্যবহারকারীর লিখতে বন্ধুত্বপূর্ণ. 520 00:28:13,510 --> 00:28:14,430 >> কিন্তু আমি এখনও কাজ করছি না. 521 00:28:14,430 --> 00:28:17,800 আমি * T * গুলি পায় না বলতে পারেন. 522 00:28:17,800 --> 00:28:19,440 কারণ আমি তখন কি কাজ করা হবে? 523 00:28:19,440 --> 00:28:22,950 আমি H, H, H, H, H নির্বাণ করা চাই গোটা ব্যাপারটাই সর্বত্র. 524 00:28:22,950 --> 00:28:22,995 রাইট? 525 00:28:22,995 --> 00:28:26,020 >> * T কারণ T মধ্যে ঠিকানা যান. 526 00:28:26,020 --> 00:28:27,580 কিন্তু আমরা একটি লুপ এর ভিতরে করছি. 527 00:28:27,580 --> 00:28:32,150 এবং কি মান আমি বৃদ্ধিশীল am অবশ্যই, প্রতিটি পুনরাবৃত্তির নেভিগেশন? 528 00:28:32,150 --> 00:28:32,690 আমি. 529 00:28:32,690 --> 00:28:34,590 >> কিন্তু একটি সুযোগ আছে এখানে, ডান? 530 00:28:34,590 --> 00:28:37,870 এটি হচ্ছে মত এই মতানুযায়ী যদিও একটি সামান্য আরো পরিশীলিত 531 00:28:37,870 --> 00:28:40,730 বর্গাকার বন্ধনী-স্বরলিপি আর আমরা কিছু সময়ের জন্য ব্যবহার করেছি - 532 00:28:40,730 --> 00:28:43,840 আমার সম্পর্কে আছে আমার জ পরিবর্তন পূর্বাবস্থা করা যাক - 533 00:28:43,840 --> 00:28:48,870 এখন এই একটি সামান্য পাওয়ার হয়, যদিও fancier, মৌলিক ধারণা, যদি * T 534 00:28:48,870 --> 00:28:53,630 এখানে অর্থ * T ঠিক T মধ্যে ঠিকানা যান. 535 00:28:53,630 --> 00:28:54,990 >> কিন্তু T থাকা ঠিকানা কী ছিল? 536 00:28:54,990 --> 00:28:56,850 আমরা ব্যবহার করতে থাকুন নম্বর? 537 00:28:56,850 --> 00:29:00,540 Ox456 লেগেছে, এর যে ফিরিয়ে আনা যাক শুধু আলোচনা অনুরোধে জন্য. 538 00:29:00,540 --> 00:29:05,380 ওয়েল, আমি ই এ পেতে চান T স্ট্রিং, আমি যেতে চাই 539 00:29:05,380 --> 00:29:06,460 মূলত, 456. 540 00:29:06,460 --> 00:29:09,230 >> অথবা পরিবর্তে, 457. 541 00:29:09,230 --> 00:29:10,590 আমি শুধু এক যোগ করা আবশ্যক. 542 00:29:10,590 --> 00:29:11,790 কিন্তু আমি ঠিক আছে, তা করতে পারে? 543 00:29:11,790 --> 00:29:14,680 T, আমি অঙ্কন রাখা যদিও কারণ এটা এখন একটি তীর হিসাবে এটা এর 544 00:29:14,680 --> 00:29:16,570 নম্বর, Ox456. 545 00:29:16,570 --> 00:29:21,400 এবং আমি যে এক, যোগ অথবা আরও বেশি যদি সাধারণত, আমি করতে পারেন যে আমি যোগ হলে 546 00:29:21,400 --> 00:29:24,350 আমি চাই ঠিক যেখানে আসলে পেতে. 547 00:29:24,350 --> 00:29:26,260 তাই আমি আসলে এই না - 548 00:29:26,260 --> 00:29:28,970 এবং এখন এই বলা কি পয়েন্টার এরিথমেটিক - 549 00:29:28,970 --> 00:29:30,375 আমি এই লাইন সরাতে পারেন. 550 00:29:30,375 --> 00:29:33,550 সত্যি, যা, আমি পরিস্কার এবং মনে করেন পড়তে একটু বেশি ব্যবহারকারী বান্ধব. 551 00:29:33,550 --> 00:29:35,970 কিন্তু এই কোন কম সঠিক. 552 00:29:35,970 --> 00:29:38,570 >> কোড এই লাইন এখন ব্যবহার করা হয় পয়েন্টার এরিথমেটিক. 553 00:29:38,570 --> 00:29:40,920 এটা যেতে বলছে নিম্নলিখিত ঠিকানায় - 554 00:29:40,920 --> 00:29:44,670 T শুরু যাই হোক না কেন, যা যা প্রাথমিকভাবে T প্লাস আমি হয় 555 00:29:44,670 --> 00:29:45,730 যা মহান, 0. 556 00:29:45,730 --> 00:29:49,280 যে T শুরুতে মানে প্লাস 1, প্লাস 2, প্লাস 3, এবং তাই ঘোষণা. 557 00:29:49,280 --> 00:29:51,030 S-এর সাথে এবং একই চুক্তি. 558 00:29:51,030 --> 00:29:52,750 >> এই জন্য তাই অন্বিত চিনি. 559 00:29:52,750 --> 00:29:55,900 কিন্তু বোঝার কি সত্যিই যাচ্ছে ফণা নীচে, আমি তর্ক করবে 560 00:29:55,900 --> 00:29:57,410 নিজেই এবং আসলে দরকারী. 561 00:29:57,410 --> 00:30:00,620 এটা আছে না এখন মানে আরো অনেক কিছু ম্যাজিক যাচ্ছে 562 00:30:00,620 --> 00:30:01,620 ফণা নীচে. 563 00:30:01,620 --> 00:30:03,920 আরো অনেক আছে যাচ্ছে না আমরা আপনার জন্য ছুলা ব্যাক করতে পারেন যে স্তর. 564 00:30:03,920 --> 00:30:04,810 এই সি হয়. 565 00:30:04,810 --> 00:30:06,410 এবং এই প্রোগ্রামিং করা হয়. 566 00:30:06,410 --> 00:30:08,002 প্রশ্নের সত্যিই ভাল. 567 00:30:08,002 --> 00:30:11,570 >> ঠিক আছে, তাই এই যে বগী ছিল আমি আগে উল্লেখ ছিল প্রোগ্রাম. 568 00:30:11,570 --> 00:30:12,650 swap 'দ্বিধান্বিত ছিল. 569 00:30:12,650 --> 00:30:14,070 কাজ বলে মনে করে থাকেন. 570 00:30:14,070 --> 00:30:17,390 শুধু দুধ সঙ্গে চান এবং যে প্রত্যাহার কমলার রস - আমি শুরু যা 571 00:30:17,390 --> 00:30:18,660 আজকের বিক্ষোভের পানীয়. 572 00:30:18,660 --> 00:30:22,220 তাই শুধু কমলার রস এবং সঙ্গে দুধ, আমরা একটি ব্যবহার করতে হয়নি 573 00:30:22,220 --> 00:30:26,200 অস্থায়ী পরিবর্তনশীল, tmp, একটি রাখা অস্থায়ীভাবে যাতে আমরা তারপর পারে 574 00:30:26,200 --> 00:30:28,820 বো আপডেট তারপর তার মান এবং পরিবর্তন. 575 00:30:28,820 --> 00:30:32,870 >> কিন্তু এই ফাংশন, আমরা বলেন, এই এই ফাংশন যা ছিল প্রোগ্রাম 576 00:30:32,870 --> 00:30:35,670 লিখিত ভুল ও ত্রুটিপূর্ণ ছিল, কেন? 577 00:30:35,670 --> 00:30:38,870 578 00:30:38,870 --> 00:30:39,090 হ্যাঁ? 579 00:30:39,090 --> 00:30:42,471 >> শ্রোতা: [শ্রবণাতীত]. 580 00:30:42,471 --> 00:30:44,940 >> স্পিকার 1: ঠিক, যখন আপনি swap 'কল - 581 00:30:44,940 --> 00:30:47,820 অথবা আরো সাধারণভাবে, আপনি যখন সবচেয়ে কোনো ফাংশন কল - 582 00:30:47,820 --> 00:30:51,210 যে ফাংশন আর্গুমেন্ট যদি আদিম, তাই কথা বলতে, ints এবং চিহ্ন 583 00:30:51,210 --> 00:30:56,740 এবং টেনিস এবং floats, জিনিষ ছাড়া নক্ষত্র, আপনার একটি কপি দিয়ে যাচ্ছি 584 00:30:56,740 --> 00:30:57,540 যুক্তি. 585 00:30:57,540 --> 00:31:01,580 এক্স 1 ছিল এবং y 2 ছিল, তাই যদি একটি যাচ্ছে 1 এবং 2 বো হতে যাচ্ছে. 586 00:31:01,580 --> 00:31:05,250 কিন্তু তারা বিভিন্ন অংশ হতে যাচ্ছেন বিট বিভিন্ন অংশ সম্পর্কে 587 00:31:05,250 --> 00:31:07,540 সংরক্ষণ করা কি যে মেমরি অভিন্ন মান. 588 00:31:07,540 --> 00:31:12,160 >> তাই এই কোড নিখুঁত সুপার a ও b সোয়াপিং এ. 589 00:31:12,160 --> 00:31:13,850 এটা সোয়াপিং কোন ভাল - 590 00:31:13,850 --> 00:31:15,290 - গত সপ্তাহে এর উদাহরণ 591 00:31:15,290 --> 00:31:16,390 x এবং y. 592 00:31:16,390 --> 00:31:18,780 আবার, তারা, কারণ ভুল সুযোগ. 593 00:31:18,780 --> 00:31:21,310 >> এখন, আমরা এই খাটানো সম্পর্কে কিভাবে যান নি? 594 00:31:21,310 --> 00:31:23,140 আমরা ফাংশন করতে ছিল একটু uglier তাকান. 595 00:31:23,140 --> 00:31:25,250 কিন্তু আবার, বিবেচনা কি এই মাত্র মানে. 596 00:31:25,250 --> 00:31:27,840 597 00:31:27,840 --> 00:31:31,500 >> এবং প্রকৃতপক্ষে, সুসংগতি, আমাকে এটি অভিন্ন, তাই এক জিনিস পরিবর্তন 598 00:31:31,500 --> 00:31:33,200 আমরা ঠিক কি. 599 00:31:33,200 --> 00:31:35,690 আমি গত সপ্তাহে হিসাবে উল্লেখ করেছে, এটি না যায় যেখানে ব্যাপার. 600 00:31:35,690 --> 00:31:38,120 আসলে, সাধারণত আপনি করা হবে পরিবর্তনশীল নামের পাশে তারকা. 601 00:31:38,120 --> 00:31:40,750 কিন্তু আমি এটা একটু সহজ হবে মনে হয় পরবর্তী * বিবেচনা 602 00:31:40,750 --> 00:31:44,910 এটি অর্থ ডাটা টাইপ একটা পয়েন্টার এই ক্ষেত্রে কোন int-এ. 603 00:31:44,910 --> 00:31:46,270 >> আমি এখানে কি করছেন? 604 00:31:46,270 --> 00:31:49,590 আমি আমার কোন int দিতে না বলছে অন্য int-দ্বারা অনুসরণ, 605 00:31:49,590 --> 00:31:50,810 তাদের একটি এবং বো কলিং. 606 00:31:50,810 --> 00:31:52,460 আমার সম্পর্কে কোন int এর ঠিকানা দিন. 607 00:31:52,460 --> 00:31:53,960 আমার সম্পর্কে অন্য কোন int এর ঠিকানা দিন. 608 00:31:53,960 --> 00:31:56,330 যারা a ও b ঠিকানাগুলি ডাকুন. 609 00:31:56,330 --> 00:32:00,860 >> এবং তারপর * স্বরলিপি নিচে ব্যবহার নিচে, যারা প্রত্যেকটি ঠিকানায় যান 610 00:32:00,860 --> 00:32:05,290 হিসাবে হয় পেতে প্রয়োজন বা তার মান সেট. 611 00:32:05,290 --> 00:32:07,400 কিন্তু এখানে একটি ব্যতিক্রম আছে. 612 00:32:07,400 --> 00:32:11,130 কেন আমি tmp পাশে একটি * আছে না? 613 00:32:11,130 --> 00:32:15,070 আমি কেন উদাহরণস্বরূপ, এই না? 614 00:32:15,070 --> 00:32:19,370 আমি সব যেতে হবে মত মতানুযায়ী আউট এবং গোটা ব্যাপারটাই সঠিক. 615 00:32:19,370 --> 00:32:19,752 হ্যাঁ? 616 00:32:19,752 --> 00:32:21,002 >> শ্রোতা: [শ্রবণাতীত]. 617 00:32:21,002 --> 00:32:23,280 618 00:32:23,280 --> 00:32:25,480 >> স্পিকার 1: আমি ঘোষণা করেন নি একটি স্ট্রিং হিসাবে tmp. 619 00:32:25,480 --> 00:32:28,830 620 00:32:28,830 --> 00:32:34,950 তাই এই, এই ক্ষেত্রে, ঘোষণা করা হবে একটি tmp কোন int এর ঠিকানা হতে পারে. 621 00:32:34,950 --> 00:32:37,380 কিন্তু যে আমি চাই বেশ কি না কারণের একটি দম্পতি জন্য. 622 00:32:37,380 --> 00:32:38,616 >> শ্রোতা: আপনি তাদের অদলবদল করতে না চান. 623 00:32:38,616 --> 00:32:41,800 >> স্পিকার 1: ঠিক, আমি অদলবদল করতে না চান tmp সঙ্গে রয়েছে. tmp ঠিক 624 00:32:41,800 --> 00:32:42,790 সপ্তাহে এক উপাদান. 625 00:32:42,790 --> 00:32:45,150 আমি চাই সব পরিবর্তনশীল কিছু সংখ্যা সঞ্চয়. 626 00:32:45,150 --> 00:32:47,330 আমি এমনকি ঠিকানা সম্বন্ধে গ্রাহ্য না এই মুহূর্তে. 627 00:32:47,330 --> 00:32:50,530 >> আমি 32 বিট প্রয়োজন বা তাই কোন int সঞ্চয়. 628 00:32:50,530 --> 00:32:56,690 এবং আমি যারা 32 বিট মধ্যে লাগাতে চান যাই হোক না কেন, তাই কথা বলতে, একটি নয়, কিন্তু 629 00:32:56,690 --> 00:33:01,260 আরও ভালো হবে, একটি কি হয়. 630 00:33:01,260 --> 00:33:06,420 একটি একটি ঠিকানা যদি, * একটি উপায় কারণ সেখানে যান এবং মান 1 পেতে. 631 00:33:06,420 --> 00:33:10,560 উদাহরণস্বরূপ, গত সপ্তাহে এর উদাহরণ অথবা B এর ক্ষেত্রে, 2 মান পেতে. 632 00:33:10,560 --> 00:33:11,750 >> তাই কি সত্যিই যাচ্ছে? 633 00:33:11,750 --> 00:33:15,070 আমার সম্পর্কে যে এখানে একটি ছবি আঁকা চলুন শুরু করা যাক শুধু আজ অংশ বাদে আঁশ বাহির করা. 634 00:33:15,070 --> 00:33:18,580 কিন্তু এই দেখা যাবে বেশ কিছু সময়ের জন্য. 635 00:33:18,580 --> 00:33:22,430 >> এই, আমি দাবি, কি আপনার কম্পিউটারের হয় মেমরি আপনি একটি চালানোর মত দেখায় 636 00:33:22,430 --> 00:33:24,060 প্রোগ্রাম, যে কোন প্রোগ্রাম. 637 00:33:24,060 --> 00:33:28,340 আপনি খুব শীর্ষে একটি প্রোগ্রাম চালাতে হলে আপনার কম্পিউটারের RAM-র - তাই মনে 638 00:33:28,340 --> 00:33:33,530 আপনার এই আয়তক্ষেত্র, সত্যিই, কম্পিউটারের RAM-র বা মেমরি, সমস্ত 101 639 00:33:33,530 --> 00:33:36,920 এটি বিলিয়ন বাইট, সমস্ত দুই বিলিয়ন বাইট, এটি সমস্ত দুই গিগাবাইট, 640 00:33:36,920 --> 00:33:39,910 আপনি পরিমাণ যাই হোক না কেন, এটি একটি আয়তক্ষেত্র হিসাবে আঁকা যাক. 641 00:33:39,910 --> 00:33:43,260 আপনি একটি প্রোগ্রাম চালাতে এবং যখন আমি যে দাবি মাইক্রোসফট ওয়ার্ড অথবা Chrome-এর মত 642 00:33:43,260 --> 00:33:49,220 যে ভালো বা কিছু, যে বিট মাইক্রোসফট বা যে Google লিখেছিলেন - 643 00:33:49,220 --> 00:33:50,910 যারা প্রোগ্রামের ক্ষেত্রে - 644 00:33:50,910 --> 00:33:54,490 আপনার কম্পিউটারের মেমরিতে লোড করা হয় তারা আরো কার্যকর করা যেতে পারে যেখানে 645 00:33:54,490 --> 00:33:57,520 দ্রুত এবং প্রতিপালিত CPU-র মধ্যে, যা কম্পিউটারের মস্তিস্ক হয়. 646 00:33:57,520 --> 00:34:00,940 >> এবং Tam তারা খুব সংরক্ষিত করছি আপনার প্রোগ্রাম শীর্ষে, তাই কথা বলতে. 647 00:34:00,940 --> 00:34:03,300 অন্য কথায়, যদি এই একটি খণ্ড হয় মেমরি, আপনি ডবল উপর ক্লিক করা হলে 648 00:34:03,300 --> 00:34:05,740 মাইক্রোসফট ওয়ার্ড, বিট আসা হার্ড ড্রাইভ বন্ধ. 649 00:34:05,740 --> 00:34:06,680 তারা উপস্থিত RAM-র মধ্যে লোড করা হবে. 650 00:34:06,680 --> 00:34:10,330 এবং আমরা খুব শীর্ষে তাদের আপ ঠেলা করব ধারণার দিক থেকে এই আয়তক্ষেত্র. 651 00:34:10,330 --> 00:34:13,010 >> ওয়েল, আপনার মেমরি বাকি হয় বিভিন্ন জিনিষ জন্য ব্যবহৃত. 652 00:34:13,010 --> 00:34:16,460 খুব শীর্ষে আপনি আরম্ভ দেখুন তথ্য ও ডেটা uninitialize. 653 00:34:16,460 --> 00:34:20,500 এই সঙ্গে, অধিকাংশ অংশ জন্য, কি আছে ধ্রুবক বা গ্লোবাল ভেরিয়েবল 654 00:34:20,500 --> 00:34:21,340 যে মান আছে. 655 00:34:21,340 --> 00:34:22,980 যারা অন্য সময় কিন্তু আরো. 656 00:34:22,980 --> 00:34:25,150 >> তারপর আপনি যা গাদা আছে, আমরা ফিরে আসবো. 657 00:34:25,150 --> 00:34:28,420 কিন্তু নীচে যে অংশ বিশেষ করে ডান এখন germane. 658 00:34:28,420 --> 00:34:30,210 এটা তথাকথিত স্ট্যাকের না. 659 00:34:30,210 --> 00:34:33,850 তাই শুধু এখানে সবচেয়ে কোনো ডি Hall চান ক্যাম্পাস, আপনি সেই ট্রে আছে 660 00:34:33,850 --> 00:34:37,210 শুধু যা একে অপরের উপর গাদা আপনি খাদ্য এবং যে কোন বস্তু লাগাতে পারেন. 661 00:34:37,210 --> 00:34:40,139 একটি কম্পিউটার সিস্টেমের মধ্যে স্ট্যাকের অনুরূপ. 662 00:34:40,139 --> 00:34:42,679 আমরা ব্যবহার, ট্রে যেহেতু ছাড়া ডাইনিং হল, অবশ্যই, বোঝানো হয় 663 00:34:42,679 --> 00:34:45,710 জিনিষ ট্রে বহন বা ফ্রেম - 664 00:34:45,710 --> 00:34:49,469 আমরা তাদের ডাকবো হিসেবে - একটি কম্পিউটার এর মধ্যে মেমরি ধারণ করার জন্য ব্যবহার করা হয় 665 00:34:49,469 --> 00:34:51,610 ভেরিয়েবল এবং মান. 666 00:34:51,610 --> 00:34:53,929 >> তাই কি সত্যিই যায় ফণা নীচে? 667 00:34:53,929 --> 00:34:55,820 আচ্ছা, আমাকে বেশি উল্টানো যাক এখানে পর্দায়. 668 00:34:55,820 --> 00:34:58,370 এবং let এর ঠিক উপর ফোকাস একটি মুহূর্ত জন্য নীচের অংশ. 669 00:34:58,370 --> 00:35:02,770 এই আমার নীচে অংশ যদি কম্পিউটার এর মেমরি এটি সক্রিয় আউট যখন আমি 670 00:35:02,770 --> 00:35:05,350 ফাংশন প্রধান কল - যা সত্যি, এরকম 671 00:35:05,350 --> 00:35:06,950 স্বয়ংক্রিয়ভাবে আমার জন্য - 672 00:35:06,950 --> 00:35:10,510 আমি মেমরি একটি খণ্ড পেতে আমার RAM-র নীচে, তাই কথা বলতে. 673 00:35:10,510 --> 00:35:13,390 প্রধান যেখানে এবং এই হল স্থানীয় ভেরিয়েবল যান. 674 00:35:13,390 --> 00:35:16,770 যেখানে argc এবং argv হয়তো এটা যান, এবং কোনো ভেরিয়েবল আমি 675 00:35:16,770 --> 00:35:18,170 প্রধান ভিতর ডিক্লেয়ার. 676 00:35:18,170 --> 00:35:20,260 তারা নীচে শেষ পর্যন্ত আমার কম্পিউটার এর RAM-র. 677 00:35:20,260 --> 00:35:25,040 >> এখন প্রধান যে কল একটি ফাংশন অনুমান swap 'র মত, এটা যেমন গত সপ্তাহে কি? 678 00:35:25,040 --> 00:35:30,620 ভাল, আমরা মূলত একটি, একটি নতুন ট্রে করা মেমরি আমার খণ্ড সম্মুখের নতুন ফ্রেম. 679 00:35:30,620 --> 00:35:34,160 এবং আমি এই হিসাবে বর্ণনা করা যাচ্ছে না swap 'র ফাংশন অন্তর্গত. 680 00:35:34,160 --> 00:35:35,770 >> এখনই swap 'র ভিতর কি? 681 00:35:35,770 --> 00:35:39,240 ওয়েল, গত সপ্তাহে এর প্রোগ্রাম উপর ভিত্তি করে এবং আমরা শুধু থেকে একটি উদ্ধৃতাংশ দেখেছি এক, 682 00:35:39,240 --> 00:35:46,590 swap 'এর ফ্রেম ভিতরে, অথবা swap' র এর উপর ট্রে, কি ভেরিয়েবল? 683 00:35:46,590 --> 00:35:47,970 ওয়েল, a ও b. 684 00:35:47,970 --> 00:35:51,850 যারা তার স্থানীয় আর্গুমেন্ট কারণ প্লাস একটি তৃতীয়, tmp. 685 00:35:51,850 --> 00:35:54,470 সত্যিই তাই, আমি এই আঁকতে পারে একটি সামান্য আরো পরিচ্ছন্নভাবে. 686 00:35:54,470 --> 00:35:56,680 আমাকে এগিয়ে যান এবং লেবেল পূর্বাবস্থা করা যাক. 687 00:35:56,680 --> 00:35:58,520 এবং আপনি কি জানেন যে সম্পর্কে দাবি করা যাক? 688 00:35:58,520 --> 00:36:00,560 >> একটি সম্ভবত এখানে শেষ করতে যাচ্ছে. 689 00:36:00,560 --> 00:36:02,160 বি এখানে শেষ করতে যাচ্ছে. 690 00:36:02,160 --> 00:36:03,810 এবং tmp এখানে শেষ করতে যাচ্ছে. 691 00:36:03,810 --> 00:36:05,160 এখন, ক্রমবিন্যাসের প্রতাপ একটু ভিন্ন হবে. 692 00:36:05,160 --> 00:36:06,840 কিন্তু ধারণার দিক থেকে এই ধারণা করা হয়. 693 00:36:06,840 --> 00:36:11,490 >> এবং শুধু সম্মিলিতভাবে এই কি আমরা swap 'এর ফ্রেম কল, অথবা করব 694 00:36:11,490 --> 00:36:12,136 ডাইনিং হল ট্রে. 695 00:36:12,136 --> 00:36:13,150 প্রধান সঙ্গে এবং একই চুক্তি. 696 00:36:13,150 --> 00:36:14,040 কিন্তু আমি যে পুনরায় আঁকুন না. 697 00:36:14,040 --> 00:36:17,810 কিন্তু যে যেখানে argc এবং argv এবং কোনো x এবং y মত স্থানীয় ভেরিয়েবল 698 00:36:17,810 --> 00:36:18,940 পাশাপাশি হতে পারে. 699 00:36:18,940 --> 00:36:22,170 >> সুতরাং এখন সত্যিই কি ঘটছে সে বিবেচনা আপনি swap 'যখন কল. 700 00:36:22,170 --> 00:36:26,370 যেমন আপনি swap 'যখন কল, নির্বাহ কোড এই, আপনি, কথা প্রসঙ্গে করছি 701 00:36:26,370 --> 00:36:30,670 বগী সংস্করণ, a ও b হিসাবে x এবং y কপি. 702 00:36:30,670 --> 00:36:34,300 আমি এখন এই আঁকা না তাই আপনি যদি পর্দায় - 703 00:36:34,300 --> 00:36:36,700 এই সময়ে আরও ভাল পেয়েছিলাম - 704 00:36:36,700 --> 00:36:40,850 আমি নিজেকে কহন ছিল গল্প তাই এই বগী সংস্করণ ছিল যখন আমরা 705 00:36:40,850 --> 00:36:46,130 আক্ষরিক a ও b কথা প্রসঙ্গে অদলবদল কল পূর্ণসংখ্যা হিসাবে, কি সত্যিই কি ঘটছে? 706 00:36:46,130 --> 00:36:48,250 >> ভাল, কি সত্যিই ঘটছে না. 707 00:36:48,250 --> 00:36:52,850 আমাকে এগিয়ে যান এবং শুধু পূর্বাবস্থা চলুন শুরু করা যাক এখানে কিছু স্থান আপ সাফ করতে. 708 00:36:52,850 --> 00:36:54,720 তাই এই আমার কম্পিউটার এর মেমরি হয়. 709 00:36:54,720 --> 00:36:57,510 >> আমি যদি তাই হয়, উদাহরণস্বরূপ - 710 00:36:57,510 --> 00:36:58,910 আসলে এর যাক এই ভাবে করবেন - 711 00:36:58,910 --> 00:37:02,690 আমি এই সংরক্ষণ, হল x দাবি করে যে যদি গত সপ্তাহেই মত মান 1. 712 00:37:02,690 --> 00:37:05,930 এবং এই মান সংরক্ষণ, Y হয় 2 মাত্র গত সপ্তাহে না. 713 00:37:05,930 --> 00:37:11,370 এবং এই, আমি ও swap 'যখন কল, প্রধান যার ফলে একটি এবং নিজেকে এক্সেস প্রদান 714 00:37:11,370 --> 00:37:15,150 বো এবং tmp, আমি যে দাবি করতে যাচ্ছি এই একটি এবং এই 1. 715 00:37:15,150 --> 00:37:16,080 >> এই বো. 716 00:37:16,080 --> 00:37:17,010 এই 2. 717 00:37:17,010 --> 00:37:18,370 এই tmp বলা হয়. 718 00:37:18,370 --> 00:37:23,360 >> এবং প্রাথমিকভাবে, এটি কিছু আবর্জনা মান আছে আমি আসলে এটি একটি সঞ্চয় পর্যন্ত 719 00:37:23,360 --> 00:37:24,450 যা 1. 720 00:37:24,450 --> 00:37:28,320 তারপর আমি এগিয়ে যান এবং পরিবর্তন একটি কি হবে? 721 00:37:28,320 --> 00:37:29,720 B এর মান. 722 00:37:29,720 --> 00:37:31,980 >> তাই এখন আমি এখানে দুই আছে. 723 00:37:31,980 --> 00:37:34,050 এবং তারপর আমরা বো tmp পায় বলেন. 724 00:37:34,050 --> 00:37:37,670 আবার, বৈধতা পরীক্ষা করে, ঠিক যেমন তৃতীয় এখানে কোড লাইন কেবল এই হল 725 00:37:37,670 --> 00:37:39,440 এক, বো tmp পায়. 726 00:37:39,440 --> 00:37:41,730 >> তাই সর্বশেষে, আমি কি করব? 727 00:37:41,730 --> 00:37:46,800 আমি এগিয়ে যান এবং বো হতে পরিবর্তন যাই হোক না কেন tmp এর মান 1, যা হয়. 728 00:37:46,800 --> 00:37:48,390 আমি আবার tmp স্পর্শ করবেন না. 729 00:37:48,390 --> 00:37:54,100 >> কিন্তু এখন, সমস্যা যত তাড়াতাড়ি swap হিসাবে হয় আয়, এটি হস্তান্তর না কারণ 730 00:37:54,100 --> 00:37:57,540 কিছু মান ফিরে, কোন রিটার্ন আছে বিবৃতি এটা স্পষ্টভাবে. 731 00:37:57,540 --> 00:37:59,080 আসলে কি ঘটছে? 732 00:37:59,080 --> 00:38:03,480 ওয়েল, মূলত এই সব স্মৃতি - 733 00:38:03,480 --> 00:38:07,410 ঠিক আছে, দৃশ্যত: রবার সার্চইঞ্জিন একটি সময়ে শুধুমাত্র এক আঙুল - 734 00:38:07,410 --> 00:38:08,180 শুধু disappears. 735 00:38:08,180 --> 00:38:10,070 >> এখন বাস্তবে এটি না কোথাও হয় যাব. 736 00:38:10,070 --> 00:38:11,810 তবে আপনি যদি মনে করতে পারেন এখন প্রশ্ন চিহ্ন হিসাবে. 737 00:38:11,810 --> 00:38:14,040 এটা কোনো কারণ আসলে ব্যবহার. 738 00:38:14,040 --> 00:38:17,470 এবং কিছুই যারা মান সম্পন্ন করা হয়. 739 00:38:17,470 --> 00:38:21,920 >> তাই সবুজ সংস্করণের ক্ষেত্রে এই কোড পরিবর্তে কি হচ্ছে 740 00:38:21,920 --> 00:38:24,640 swap 'র মধ্যে পাস? 741 00:38:24,640 --> 00:38:25,770 সুতরাং ঠিকানাগুলি. 742 00:38:25,770 --> 00:38:28,520 সুতরাং x এর ঠিকানা এবং y এর ঠিকানা. 743 00:38:28,520 --> 00:38:35,790 আমরা তাই আপনি যদি এই গল্প শেষ পুনরায় বলুন সময়, এবং আসলে আমি আবার swap 'র আঁকা 744 00:38:35,790 --> 00:38:44,620 কিন্তু পয়েন্টার সাথে, এই এই একটি হচ্ছে খ হচ্ছে, এবং এই হচ্ছে tmp, কি 745 00:38:44,620 --> 00:38:49,080 আসলে এই সবুজ একটি সঞ্চিত আমি পার করছি যেখানে আমার কোড এর সংস্করণ 746 00:38:49,080 --> 00:38:52,110 ঠিকানার মধ্যে? 747 00:38:52,110 --> 00:38:53,780 >> এটা x এর একটি পয়েন্টার হতে যাচ্ছে. 748 00:38:53,780 --> 00:38:54,890 তাই আমি একটি তীর আঁকতে পারে. 749 00:38:54,890 --> 00:38:57,310 কিন্তু একই অবাধ ব্যবহার আগে যেমন. 750 00:38:57,310 --> 00:39:01,220 চলুন শুরু করা যাক এই বলে যে Ox123 মত. 751 00:39:01,220 --> 00:39:04,970 এবং এই Ox127 হতে যাচ্ছে, কারণ এটা, কারণ এটি চার বাইট দূরে এর একটি 752 00:39:04,970 --> 00:39:07,370 int-এ, তাই Ox127. 753 00:39:07,370 --> 00:39:09,080 >> এবং আবার, আমি কিছু স্বাধীনতাকে গ্রহণ করছি সংখ্যার সঙ্গে. 754 00:39:09,080 --> 00:39:11,430 তারা হবে তুলনায় অনেক ছোট করছি আসলে একটি ভিন্ন অনুক্রমে চিহ্নিত করা এবং. 755 00:39:11,430 --> 00:39:14,350 কিন্তু যে কিভাবে ছবিটি এখন ভিন্ন. 756 00:39:14,350 --> 00:39:19,060 >> কিন্তু আমি এই সবুজ কোড ব্যবহার করেন তখন এবং আমি int-tmp * একটি পেতে পারি. 757 00:39:19,060 --> 00:39:25,010 , নিম্নোক্ত কাজ নিতে * একটি উপায় , একটি মধ্যে যে ঠিকানা এবং এটা যেতে 758 00:39:25,010 --> 00:39:26,190 যা 1. 759 00:39:26,190 --> 00:39:28,480 এবং যে আমি তারপর tmp রাখা কি. 760 00:39:28,480 --> 00:39:32,480 এদিকে, কোড পরের লাইনে এখানে, * একটি বো পায়, এর অর্থ কি? 761 00:39:32,480 --> 00:39:36,910 >> ওয়েল, * একটি, তাই এখানে যান পায় * খ, যা সেখানে যাওয়ার মানে. 762 00:39:36,910 --> 00:39:39,310 সেখানে মান রাখা মানে. 763 00:39:39,310 --> 00:39:43,670 অবশেষে, কোড শেষ লাইন সহজভাবে * বো tmp পায় বলেন. 764 00:39:43,670 --> 00:39:48,900 >> তাই বো বলেছেন সেখানে যান এবং সঙ্গে এটি মুছে ফেলা এই ক্ষেত্রে, যাচ্ছে যা tmp 765 00:39:48,900 --> 00:39:51,520 আবার,, 1 হতে হবে. 766 00:39:51,520 --> 00:39:54,920 এবং এই হল কেন সবুজ সংস্করণ আমাদের কোড কাজ, লাল, যেহেতু 767 00:39:54,920 --> 00:39:56,010 সংস্করণ করেনি কখনও. 768 00:39:56,010 --> 00:39:59,020 কিভাবে নিচে এটা সব ঠিক boils মেমরি পরিচালিত এবং এটি যেখানে হয় 769 00:39:59,020 --> 00:40:02,580 আসলে আপনার মধ্যে স্থাপন করা কম্পিউটারের RAM-র. 770 00:40:02,580 --> 00:40:07,270 এবং এখন জন্য, যে এক স্ট্যাকের জন্য ব্যবহৃত হচ্ছে. 771 00:40:07,270 --> 00:40:09,225 >> বহির্বিন্যাস প্রশ্ন? 772 00:40:09,225 --> 00:40:10,380 পয়েন্টার নেভিগেশন? 773 00:40:10,380 --> 00:40:11,630 অথবা swap 'র উপর? 774 00:40:11,630 --> 00:40:13,740 775 00:40:13,740 --> 00:40:17,043 >> ঠিক আছে, তাই malloc, রিকল, ভালো কিছু করেনি. 776 00:40:17,043 --> 00:40:18,260 এটি একটি সুপার সহজ উদাহরণ. 777 00:40:18,260 --> 00:40:20,550 এবং এই এক যে ছিল Binky বেশ যদ্যপি, আমাদের চালু 778 00:40:20,550 --> 00:40:21,870 দ্রুত, ক্লাস শেষে. 779 00:40:21,870 --> 00:40:24,480 Dammit, সেখানে আমরা আবার যেতে. 780 00:40:24,480 --> 00:40:28,780 >> তাই এই উদাহরণ যে পুনরাহ্বান যে Binky যদিও আমাদের চালু 781 00:40:28,780 --> 00:40:30,360 কিছুটা দ্রুত ক্লাস শেষে. 782 00:40:30,360 --> 00:40:33,640 এবং এখানে আমরা সত্যিই malloc ব্যবহার দ্বিতীয় সময় জন্য. 783 00:40:33,640 --> 00:40:37,330 প্রথমবার কারণ আমরা এটি ব্যবহার পর্যাপ্ত RAM উপস্থিত তৈরি, পর্যাপ্ত RAM উপস্থিত বরাদ্দ 784 00:40:37,330 --> 00:40:38,340 একটি স্ট্রিং সঞ্চয়. 785 00:40:38,340 --> 00:40:40,250 >> এই সময় Binky এটা সহজ রাখা. 786 00:40:40,250 --> 00:40:42,465 তাই এটি শুধু সঞ্চয় এর কোন int, দৃশ্যত. 787 00:40:42,465 --> 00:40:43,510 এবং যে সম্পূর্ণই সূক্ষ্ম. 788 00:40:43,510 --> 00:40:46,560 এটি করার জন্য, উন্মুক্তভাবে, একটু অদ্ভুত এক int-এ বরাদ্দ malloc ব্যবহার করুন. 789 00:40:46,560 --> 00:40:50,650 কিন্তু নিক এর claymation বিন্দু ছিল সত্যিই কি গল্প বলা 790 00:40:50,650 --> 00:40:53,830 এরকম অথবা যখন ঘটতে না আপনি মেমরি mistreat. 791 00:40:53,830 --> 00:40:56,520 >> তাই এই ক্ষেত্রে, এই প্রোগ্রাম কিছু জিনিস না. 792 00:40:56,520 --> 00:41:01,580 এখানে প্রথম ক্ষেত্রে, এটা ঘোষণা একটি পয়েন্টার কোন int-x এর বলা হয়. 793 00:41:01,580 --> 00:41:04,480 এর পরে একটি পয়েন্টার ঘোষণা কোন int-Y বলা হয়. 794 00:41:04,480 --> 00:41:06,150 তারপর, x এর মধ্যে কি সঞ্চয়? 795 00:41:06,150 --> 00:41:07,110 এখন অন্য কেউ. 796 00:41:07,110 --> 00:41:09,685 অনুযায়ী x এর মধ্যে সঞ্চিত পরার কি এই প্রোগ্রামের থার্ড লাইন? 797 00:41:09,685 --> 00:41:12,380 >> শ্রোতা: [শ্রবণাতীত]. 798 00:41:12,380 --> 00:41:14,130 >> স্পিকার 1: ভাল, বেশ বাইট, প্রতি বলে. 799 00:41:14,130 --> 00:41:16,760 এখন আরও ভালো হবে. 800 00:41:16,760 --> 00:41:18,325 X এর মধ্যে কি সংরক্ষিত পরার? 801 00:41:18,325 --> 00:41:21,000 802 00:41:21,000 --> 00:41:22,060 একটি ঠিকানা, আমি এটা শুনে মনে হয়. 803 00:41:22,060 --> 00:41:23,570 >> সুতরাং malloc কি ফিরে না? 804 00:41:23,570 --> 00:41:26,030 malloc আচরণগতভাবে বরাদ্দ মেমরি একটি খণ্ড. 805 00:41:26,030 --> 00:41:27,850 কিন্তু এটা কিভাবে আপনি এটি অ্যাক্সেস দিতে না? 806 00:41:27,850 --> 00:41:29,460 এটা কি ফেরৎ? 807 00:41:29,460 --> 00:41:32,000 প্রথম বাইট এর ঠিকানা মেমরি খণ্ড মধ্যে. 808 00:41:32,000 --> 00:41:33,020 >> এখন, এই সুপার সহজ. 809 00:41:33,020 --> 00:41:35,380 এটা শুধু একটি বাইট আছে, যার মানে হচ্ছে আমরা ফিরে পেয়ে থাকেন ঠিকানা হল 810 00:41:35,380 --> 00:41:37,300 গোটা ব্যাপারটাই ঠিকানা. 811 00:41:37,300 --> 00:41:42,070 আমি তখন x এর মধ্যে সঞ্চিত, ঠিকানা হল মেমরি যে তাল না. 812 00:41:42,070 --> 00:41:43,400 এদিকে, পরে কি হবে? 813 00:41:43,400 --> 00:41:45,890 তাই আসলে, এর এগিয়ে যান এবং এই বাস্তব দ্রুত আঁকা. 814 00:41:45,890 --> 00:41:52,490 >> আমরা এখানে পর্দায় যেতে উপর এবং যদি তাই আমরা এই নিঃশেষিত int-* x এবং int-* Y 815 00:41:52,490 --> 00:41:53,740 আমার জন্য কি করতে যাচ্ছে? 816 00:41:53,740 --> 00:41:58,280 আমি এটা ঠিক করতে যাচ্ছে দাবি করে যে ভালো কিছু এবং এটি এক্স কল, এবং 817 00:41:58,280 --> 00:42:00,010 এই এবং এটি Y কল. 818 00:42:00,010 --> 00:42:03,110 এদিকে, কোড তৃতীয় লাইন কোন int মাপ বরাদ্দ করা যাচ্ছে, 819 00:42:03,110 --> 00:42:06,160 যা হতে হবে - আমি দুঃখিত যদি - আমি এক int-বোঝানো এক আগে 820 00:42:06,160 --> 00:42:08,280 একটি সাধারণ কম্পিউটারে চার বাইট. 821 00:42:08,280 --> 00:42:09,720 এবং CS50 প্রয়োগ অন্তত. 822 00:42:09,720 --> 00:42:11,490 >> তাই এই বরাদ্দ করা যাচ্ছে না এটা কে জানে? 823 00:42:11,490 --> 00:42:12,800 কোথাও খুঁজে এখানে. 824 00:42:12,800 --> 00:42:15,780 এবং এই কিছু সংরক্ষণ করা হয় ঠিকানা Ox, কে জানে? 825 00:42:15,780 --> 00:42:18,330 কিন্তু কি ফিরে পেতে যাচ্ছে যে ঠিকানা. 826 00:42:18,330 --> 00:42:22,270 কিন্তু আমরা pictorially এই আঁকা করব যে ঠিক মত একটি তীর. 827 00:42:22,270 --> 00:42:25,430 >> এখন পরের লাইন * X 42 পায়. 828 00:42:25,430 --> 00:42:29,400 * X layman এর পরিপ্রেক্ষিতে এর অর্থ কি? 829 00:42:29,400 --> 00:42:30,040 ঠিক আছে যান. 830 00:42:30,040 --> 00:42:30,960 যে ঠিকানায় যান. 831 00:42:30,960 --> 00:42:35,900 অথবা অন্য কথায়, অনুসরণ তীর এবং সেখানে 42 করা. 832 00:42:35,900 --> 00:42:38,140 কিন্তু তারপর খারাপ কিছু ঘটেছে Binky আপনি, ডান? 833 00:42:38,140 --> 00:42:43,950 >> যে লাইন এখানে পাঁচ প্রত্যাহার, * Y পায় 13 প্রকৃতপক্ষে একটি দুর্ভাগা নম্বর, 834 00:42:43,950 --> 00:42:44,760 আমাদের জন্য কি? 835 00:42:44,760 --> 00:42:47,320 ওয়েল, * Y উপায় আছে যান. 836 00:42:47,320 --> 00:42:50,460 ওয়েল, এই দেওয়া হয়নি একটি মান এখনো, ডান? 837 00:42:50,460 --> 00:42:54,090 কোড Y হচ্ছে না কিছু সক্রিয়া. 838 00:42:54,090 --> 00:42:56,120 আমরা x সক্রিয়া করা হচ্ছে ছিল একটি ঠিকানায়. 839 00:42:56,120 --> 00:42:57,640 কিন্তু Y উপরে ঘোষণা করা হয়. 840 00:42:57,640 --> 00:43:00,250 কিন্তু তারপর একটি সেমিকোলন, কোন মূল্য আসলে এটি স্থাপন করা হয়. 841 00:43:00,250 --> 00:43:02,330 সুতরাং এই কল পরিষ্কার একটি আবর্জনা মান. 842 00:43:02,330 --> 00:43:03,430 কে আছে জানেন কি? 843 00:43:03,430 --> 00:43:07,160 এটি ব্যবহার করা হয় যে বিট অবশিষ্টাংশ এর মধ্যে কিছু কোড পূর্ববর্তী রেখা দ্বারা 844 00:43:07,160 --> 00:43:08,300 আমার প্রোগ্রাম. 845 00:43:08,300 --> 00:43:13,250 >> আমি সেখানে যেতে বলে, তাই যদি এই মত হল আমি এই তীর যেখানে কোন ধারণা আছে 846 00:43:13,250 --> 00:43:14,490 শেষ পর্যন্ত যাচ্ছে. 847 00:43:14,490 --> 00:43:17,720 যখন আপনি সাধারণত এবং যে একটি সেগমেন্টেশন ফল্ট পেতে. 848 00:43:17,720 --> 00:43:22,430 যদি আপনি দূর্ঘটনাক্রমে dereference, তাই আপনি কথা বলতে, বা না একটি ঠিকানায় 849 00:43:22,430 --> 00:43:25,400 আসলে একটি বৈধ ঠিকানা, খারাপ ব্যাপার ঘটতে. 850 00:43:25,400 --> 00:43:27,550 >> এবং যে কি ঘটেছে ঠিক Binky মনে. 851 00:43:27,550 --> 00:43:31,060 তাই প্রত্যাহার যে নিক যে বিবরণ এখানে কহন একই ধারণা ছিল কি 852 00:43:31,060 --> 00:43:34,050 আমি বিভ্রম সঙ্গে টানা করেছি সেখানে বোর্ডে খড়ি. 853 00:43:34,050 --> 00:43:35,960 X এবং y ঘোষণা করা হয়. 854 00:43:35,960 --> 00:43:39,690 >> তারপর আমরা মাপ বরাদ্দ কোন int এবং x এর মধ্যে এটি সংরক্ষণ করা হয়. 855 00:43:39,690 --> 00:43:42,130 তারপর আমরা কি পরের লাইন * X. 856 00:43:42,130 --> 00:43:46,070 এই নিক এর যাদু জাদুদণ্ড ছিল dereferencing হয়. 857 00:43:46,070 --> 00:43:49,780 যে মেমরি 42 করা x এর দ্বারা নির্দিষ্ট. 858 00:43:49,780 --> 00:43:51,600 >> কিন্তু এই যেখানে জিনিষ ভয়ঙ্করভাবে ভুল হয়েছে. 859 00:43:51,600 --> 00:43:51,820 রাইট? 860 00:43:51,820 --> 00:43:53,550 আমরা dereference Y করার চেষ্টা করে. 861 00:43:53,550 --> 00:43:55,620 কিন্তু Y অধিকার, কিছু অচল মূল্য ছিল? 862 00:43:55,620 --> 00:43:57,720 >> নীচে বাঁদিকের যে তীর কোণার, না হয় 863 00:43:57,720 --> 00:43:58,950 আসলে কিছু ইশারা. 864 00:43:58,950 --> 00:44:01,520 এটা কি আমি করছেন ধরনের বোর্ডে এখানে করেছিল. 865 00:44:01,520 --> 00:44:05,900 তাই খারাপ ব্যাপার ঘটতে, সেগমেন্টেশন এই ক্ষেত্রে ফল্ট, অথবা Binky ফল্ট. 866 00:44:05,900 --> 00:44:10,800 >> কিন্তু আমরা তখন X করে ঠিক হলে Y পায় কিভাবে গল্প পরিবর্তন আছে? 867 00:44:10,800 --> 00:44:15,760 ওয়েল, আমি এক্স না যে y, ও পায় বলার অপেক্ষা রাখে না কার্যকরভাবে একই 868 00:44:15,760 --> 00:44:19,235 এই যাই হোক না কেন, Ox-কিছু এখানে একই হতে যাচ্ছে 869 00:44:19,235 --> 00:44:20,080 Ox-কিছু. 870 00:44:20,080 --> 00:44:22,970 অথবা pictorially আমরা একটি তীর আঁকা করব. 871 00:44:22,970 --> 00:44:25,530 >> সুতরাং এখানে Binky সঙ্গে বোর্ড, এর পরের লাইন সঙ্গে 872 00:44:25,530 --> 00:44:28,350 কোড * Y সেখানে যাওয়ার মানে. 873 00:44:28,350 --> 00:44:29,400 সেখানে কোথায়? 874 00:44:29,400 --> 00:44:30,820 এখানে ওভার মানে. 875 00:44:30,820 --> 00:44:36,050 >> এবং আমরা 13 হতে যে আপডেট যখন এটা শুধু যাওয়া এবং জড়িত 876 00:44:36,050 --> 00:44:39,470 এখন এখানে 13 লেখা. 877 00:44:39,470 --> 00:44:44,130 তাই সম্ভবত না সম্পূর্ণভাবে প্রথম নজরে সহজবোধ্য. 878 00:44:44,130 --> 00:44:47,740 কিন্তু সংক্ষিপ্তবৃত্তি এবং একই অপভাষা ব্যবহার যে Binky, তাই এখানে ব্যবহার করা হয়েছে 879 00:44:47,740 --> 00:44:50,485 প্রথম দুটি পয়েন্টার বরাদ্দ x এবং y, কিন্তু না pointees. 880 00:44:50,485 --> 00:44:54,750 এবং pointees একটি নয় সাধারণত শব্দটি ব্যবহার করেন. 881 00:44:54,750 --> 00:44:56,120 কিন্তু পয়েন্টার একেবারে হয়. 882 00:44:56,120 --> 00:44:59,200 কিন্তু এটা স্পষ্ট হচ্ছে কি Binky এর নামকরণের এ. 883 00:44:59,200 --> 00:45:01,660 >> অবশ্যই এই পরের লাইন, কোন int pointee বরাদ্দ. 884 00:45:01,660 --> 00:45:04,840 তাই মেমরি একটি খণ্ড - আমি উপর সৃষ্টি হিসেবে ডান দিকে আছে - এবং সেট 885 00:45:04,840 --> 00:45:06,470 x সমান এটা নির্দেশ. 886 00:45:06,470 --> 00:45:11,350 এই dereferences x এর মধ্যে 42 সঞ্চয় এটা নির্দেশ করে যে মেমরি. 887 00:45:11,350 --> 00:45:13,380 এবং তারপর এই, অবশ্যই, একটি খারাপ জিনিস না. 888 00:45:13,380 --> 00:45:15,600 Y প্রতি নির্দেশ ছিল না, কারণ কোনো কিছু. 889 00:45:15,600 --> 00:45:16,530 এটি সংশোধন করা হয়েছে. 890 00:45:16,530 --> 00:45:18,240 তাই এই এখনও বগী প্রোগ্রাম. 891 00:45:18,240 --> 00:45:21,580 আমরা মাধ্যমে প্রবাহিত করছি মাত্র কারণ লাইন এবং বলছে কোড লাইন, ভাল উহু, 892 00:45:21,580 --> 00:45:22,690 সেখানে বিপর্যস্ত করা যাক. 893 00:45:22,690 --> 00:45:23,420 যে একটি খারাপ জিনিস. 894 00:45:23,420 --> 00:45:26,790 অডস প্রোগ্রাম ঠিক যাচ্ছে হয় যে লাইনে সম্পূর্ণভাবে পরিত্যাগ. 895 00:45:26,790 --> 00:45:30,550 অপসারণের জন্য ছিল কিন্তু যদি ক্র্যাশ গত দুই সঙ্গে এটি লাইন এবং প্রতিস্থাপন করুন 896 00:45:30,550 --> 00:45:32,470 আপনি দায়িত্ব অর্পণ করা আছে লাইন - 897 00:45:32,470 --> 00:45:35,310 পয়েন্টার নিয়োগ ব্যবহার করে - পি বিন্দু T হিসাবে x এর দিকে নির্দেশ করে. 898 00:45:35,310 --> 00:45:39,280 এবং তারপর আপনি dereference একটি অত্যন্ত নিরাপদ উপায়ে Y. 899 00:45:39,280 --> 00:45:41,520 >> সুতরাং যেখানে এই আমাদের ছাড়বে? 900 00:45:41,520 --> 00:45:45,350 ওয়েল, ফণা নীচে দেখা যাচ্ছে যে CS50 লাইব্রেরি মধ্যে, পয়েন্টার হয় 901 00:45:45,350 --> 00:45:46,320 চলাকালে ব্যবহৃত. 902 00:45:46,320 --> 00:45:48,910 এবং আসলে আমরা ছুলা শুরু করব আগে দীর্ঘ ফিরে যে স্তর. 903 00:45:48,910 --> 00:45:51,740 কিন্তু এটা খুব যে একটি অভিব্যক্তি সক্রিয় আপনি কিছু, সঙ্গে পরিচিত হতে পারে 904 00:45:51,740 --> 00:45:54,580 বিশেষ করে যারা আরো আরামদায়ক, খুব জনপ্রিয় যে আসলে 905 00:45:54,580 --> 00:45:56,390 ওয়েবসাইট, অথবা স্ট্যাক ওভারফ্লো, এই দিন. 906 00:45:56,390 --> 00:45:58,720 >> কিন্তু এই আসলে খুব আছে প্রযুক্তিগত মানে. 907 00:45:58,720 --> 00:46:00,160 আমরা এখন একটি স্ট্যাক কি জানেন. 908 00:46:00,160 --> 00:46:02,550 এটা ট্রে একটি স্ট্যাক মত একটি ডাইনিং হলের ভিতরে. 909 00:46:02,550 --> 00:46:05,140 >> অথবা ভিতরে আপনার কম্পিউটার এর মেমরি যারা ফ্রেম তার 910 00:46:05,140 --> 00:46:06,900 যে কর্ম দ্বারা ব্যবহার করা হয়. 911 00:46:06,900 --> 00:46:10,760 ওয়েল, এটা দেখা যাচ্ছে যে কারণে খুব সরল বাস্তবায়ন 912 00:46:10,760 --> 00:46:14,970 মেমরি এবং তথাকথিত নেভিগেশন ফ্রেম গাদা, আপনি আসলে নিয়ন্ত্রণ গ্রহণ করতে পারেন 913 00:46:14,970 --> 00:46:17,050 মোটামুটি সহজে একটি কম্পিউটার সিস্টেমের. 914 00:46:17,050 --> 00:46:22,180 আপনি একটি সিস্টেমের মধ্যে হ্যাক করতে পারেন যদি মানুষ আমাদের কোড লেখা নি 915 00:46:22,180 --> 00:46:23,300 বিশেষ করে ভাল. 916 00:46:23,300 --> 00:46:26,670 >> আমাদের মত মানুষ অংশ ব্যবহার করা হলে মেমরি বা ব্যবহার অ্যারে এর - 917 00:46:26,670 --> 00:46:27,810 এমনকি আরো সাধারণভাবে - 918 00:46:27,810 --> 00:46:31,800 তবে কখনও কখনও চেক করতে ভুলবেন না আমাদের অ্যারের গণ্ডি আপনি প্রতাপ হিসাবে 919 00:46:31,800 --> 00:46:38,470 নিজেকে মাঝে মাঝে আছে, এবং iterated অতিদূরে শেষে একটি অ্যারের গত উপায়. 920 00:46:38,470 --> 00:46:40,520 সেরা ক্ষেত্রে, আপনার প্রোগ্রাম শুধু বিপর্যস্ত হতে পারে. 921 00:46:40,520 --> 00:46:42,280 সেগমেন্টেশন ফল্ট, দয়ালু লজ্জাজনক হবে. 922 00:46:42,280 --> 00:46:45,480 মহান নেই, কিন্তু এটা অপরিহার্যভাবে না একটি অতিশয় খারাপ জিনিস. 923 00:46:45,480 --> 00:46:49,480 >> কিন্তু আপনার প্রোগ্রাম বাস্তব নেভিগেশন আসলে যদি ব্যবহারকারীদের কম্পিউটার, এটি চলমান হলে 924 00:46:49,480 --> 00:46:53,070 একটি ওয়েবসাইট যে প্রকৃত র্যান্ডম মানুষ ইন্টারনেট, লেট আঘাত করা হয় 925 00:46:53,070 --> 00:46:56,690 মানুষ আপনার কোড নেভিগেশন খারাপ জিনিষ প্রবর্তিত হয় কারণ সাধারণত একটি ভাল জিনিস 926 00:46:56,690 --> 00:46:59,930 এটা করা একটি সুযোগ মানে কম্পিউটার নিয়ন্ত্রণ. 927 00:46:59,930 --> 00:47:01,350 এবং এই তাকান যাচ্ছে রহস্যপূর্ণ সামান্য. 928 00:47:01,350 --> 00:47:04,570 কিন্তু আমি আপনার সাথে ভীতি চাই এখানে এই শেষ উদাহরণ. 929 00:47:04,570 --> 00:47:05,650 >> এখানে কোড একটি উদাহরণ. 930 00:47:05,650 --> 00:47:07,370 এবং একটি ভাল উইকিপিডিয়া আছে মাধ্যমে পদচারনা যে নিবন্ধটি 931 00:47:07,370 --> 00:47:08,530 আরো বিস্তারিতভাবে এই. 932 00:47:08,530 --> 00:47:13,890 আমি নীচে কলিং প্রধান আছে 1 argv মধ্যে ক্ষণস্থায়ী foo বিন্যাস,. 933 00:47:13,890 --> 00:47:15,750 এবং যে ঠিক তাই করতে পারেন যে প্রোগ্রাম চালানো এবং পাস 934 00:47:15,750 --> 00:47:17,080 একটি অবাধ ইনপুট. 935 00:47:17,080 --> 00:47:20,180 >> এবং তারপর foo বিন্যাস উপরে ঘোষিত হয় একটি স্ট্রিং গ্রহণ, অথবা আরও 936 00:47:20,180 --> 00:47:21,700 অবিকল, একটি গৃহস্থালি *. 937 00:47:21,700 --> 00:47:23,860 তারপর চিহ্ন একটি অ্যারের ঘোষণা করে. 938 00:47:23,860 --> 00:47:27,130 এটি একটি বাফার, আরো সাধারণভাবে, কল আয়তন 12. 939 00:47:27,130 --> 00:47:30,900 সুতরাং 12 অক্ষর ভিতরে ফিট করতে পারে গ বলা হয় যে অ্যারের. 940 00:47:30,900 --> 00:47:33,510 >> এবং তারপর, এই নতুন ফাংশন ব্যবহার করে নতুন কিন্তু কঠিন নয় 941 00:47:33,510 --> 00:47:34,930 , মেমরি কপি বুঝতে. 942 00:47:34,930 --> 00:47:39,290 এটা ছিল, যা বার থেকে কপি করা মেমরি পরিবর্তনশীল গত N, যাই হোক না কেন 943 00:47:39,290 --> 00:47:42,080 ব্যবহারকারী C মধ্যে argv 1 মধ্যে টাইপ করা. 944 00:47:42,080 --> 00:47:43,090 কত বাইট? 945 00:47:43,090 --> 00:47:44,260 বার স্ট্রিং দৈর্ঘ্য. 946 00:47:44,260 --> 00:47:48,380 >> তাই অন্য কথায়, ব্যবহারকারীর ধরন যদি H-ই-L-L-O লিখুন, স্ট্রিং দৈর্ঘ্য 947 00:47:48,380 --> 00:47:49,260 হ্যালো পাঁচটি হয়. 948 00:47:49,260 --> 00:47:52,790 সুতরাং যারা বাইট পাঁচ পেতে যাচ্ছে গ বলা অ্যারে, মধ্যে কপি যা 949 00:47:52,790 --> 00:47:54,110 আয়তন 12 হল. 950 00:47:54,110 --> 00:47:58,710 একটি অনেক লম্বা কিন্তু কি ধরনের ব্যবহারকারী 13 টি অক্ষর বা 14 এর যে শব্দ 951 00:47:58,710 --> 00:48:01,250 অক্ষর বা 100 অক্ষর বা তার বেশি? 952 00:48:01,250 --> 00:48:02,660 >> যেখানে তারা যেতে যাচ্ছি? 953 00:48:02,660 --> 00:48:06,090 ওয়েল, যে ফ্রেম, যে ট্রে ডাইনিং হল স্ট্যাকের মধ্যে, 954 00:48:06,090 --> 00:48:06,930 তারা সেখানে যেতে চলুন. 955 00:48:06,930 --> 00:48:10,080 এবং এটি মাত্র overwriting শুরু করতে যাচ্ছে ইতিমধ্যে যে অন্যান্য উপাদান 956 00:48:10,080 --> 00:48:12,880 যে স্ট্যাকের উপর, উচ্ছ্বাসিত স্ট্যাকের, তাই কথা বলতে. 957 00:48:12,880 --> 00:48:14,780 >> সুতরাং pictorially, এই ভাবে মনে করি. 958 00:48:14,780 --> 00:48:17,970 শুধু এই একটি রঙিন সংস্করণ ছবি আঁকার আমরা আসছি. 959 00:48:17,970 --> 00:48:20,060 নীচে, প্রধান হল, এর কথা বলা যাক. 960 00:48:20,060 --> 00:48:24,690 এবং উপরে, আপনি এখন কি দেখছি ফ্রেম, রং ​​জন্য, এখন কোডেড হয় 961 00:48:24,690 --> 00:48:26,090 foo বিন্যাস বলা হয় ফাংশন. 962 00:48:26,090 --> 00:48:30,170 কিন্তু এখানে আকর্ষণীয় কি foo বিন্যাস এখানে তার ফ্রেম হয়. 963 00:48:30,170 --> 00:48:32,860 তাই এটা আমি চাই টানা এর কিন্তু হালকা নীল করেছিল. 964 00:48:32,860 --> 00:48:35,220 এবং এখন এই হল যেখানে C বন্ধনী 0 যায়. 965 00:48:35,220 --> 00:48:37,410 এবং এই সি বন্ধনী যেখানে 11 শেষ পর্যন্ত যাচ্ছে. 966 00:48:37,410 --> 00:48:39,670 >> অন্য কথায়, এটি ঘটবে একটি বর্গক্ষেত্র হিসাবে প্রতিনিধিত্ব করা. 967 00:48:39,670 --> 00:48:42,320 কিন্তু আপনি শুধু বাইট plopping রাখা নিচে - বা চিহ্ন - তারা শেষ করতে যাচ্ছেন 968 00:48:42,320 --> 00:48:46,070 আপ অবস্থানে 0 সমস্ত উপায় আপ 11 কারণ এটা ইন্ডেক্স 0. 969 00:48:46,070 --> 00:48:49,170 >> কিন্তু 13 অক্ষর যেখানে শেষ পর্যন্ত যাচ্ছে? 970 00:48:49,170 --> 00:48:50,310 14 তম কোথায়? 971 00:48:50,310 --> 00:48:52,430 50th চরিত্র কোথায় শেষ পর্যন্ত যাচ্ছে? 972 00:48:52,430 --> 00:48:54,070 >> এটি ডাউন বর্তা যাচ্ছে. 973 00:48:54,070 --> 00:48:57,350 আমরা টানা করেছি, যদিও কারণ স্ট্যাকের সঙ্গে ছবি, উদ্ভিন্ন 974 00:48:57,350 --> 00:48:59,920 ঠিকানা, এটি সক্রিয় আউট, থেকে যান ছোট ঠিকানা, ছোট 975 00:48:59,920 --> 00:49:01,830 বড় ঠিকানায় পয়েন্টার. 976 00:49:01,830 --> 00:49:03,540 তাই এটি শুধু ঊর্ধ্বগামী এবং আপ রাখে. 977 00:49:03,540 --> 00:49:05,660 >> তাই আপনি যদি ব্যবহারকারী ধরনের হ্যালো, যে মহান. 978 00:49:05,660 --> 00:49:08,650 কোন বাগ, কোন সমস্যা নেই, সবাই এর নিরাপদ. 979 00:49:08,650 --> 00:49:11,940 কিন্তু আমরা করব ব্যবহারকারী ধরনের হলে adversarial কোড কল, প্রতিনিধিত্ব 980 00:49:11,940 --> 00:49:16,040 জেনেরিক হিসাবে, আক্রমণ, আক্রমণ, আক্রমণ, আক্রমণ, কি ঘটতে পারে? 981 00:49:16,040 --> 00:49:19,760 >> ওয়েল, যদি ইনপুট যে সকল ব্যবহারকারী টাইপ করা মাত্র কিছু বন্ধুত্বপূর্ণ নয় 982 00:49:19,760 --> 00:49:21,540 অক্ষর বা অশোভন পংক্তি. 983 00:49:21,540 --> 00:49:24,050 এটা আসলে অক্ষরের একটি অনুক্রম এর যে আপনি এটা কম্পাইল করা হলে, 984 00:49:24,050 --> 00:49:26,050 আসলে এটি কোড. 985 00:49:26,050 --> 00:49:29,570 হয়তো এটা কোড যে মুছে ফেলা সব আপনার হার্ড ড্রাইভে ফাইল বা স্প্যাম পাঠায় 986 00:49:29,570 --> 00:49:30,810 যে ভালো বা কিছু. 987 00:49:30,810 --> 00:49:35,110 কি এখানে কি যে বিজ্ঞপ্তি যে খারাপ লোক যথেষ্ট ভাগ্যবান পেয়েছিলাম যদি 988 00:49:35,110 --> 00:49:37,830 মেমরি লাল খণ্ড মুছে ফেলা - 989 00:49:37,830 --> 00:49:41,080 আমি কিন্তু আমার ছবি নেভিগেশন আঁকা হয়নি, যা এখানে এই উইকিপিডিয়া ছবি আছে - 990 00:49:41,080 --> 00:49:42,890 তার তথাকথিত ফিরতি ঠিকানা. 991 00:49:42,890 --> 00:49:47,470 >> যখন খাদ্য আয়, swap 'আয় যখন, কিভাবে কম্পিউটার থেকে যেতে জানি না 992 00:49:47,470 --> 00:49:49,790 আপ এখানে ডাউন? 993 00:49:49,790 --> 00:49:52,920 অথবা আপ উপরে কারিগরি সেগমেন্টের মধ্যে, কিভাবে এটা swap 'থেকে যেতে জানি না 994 00:49:52,920 --> 00:49:54,870 কোড - 0 এবং 1 এর যে swap 'র রচনা - 995 00:49:54,870 --> 00:49:56,020 ফিরে যাও? 996 00:49:56,020 --> 00:50:00,450 একটি তথাকথিত ফিরতি ঠিকানা আছে একই স্ট্যাক ফ্রেম, সংরক্ষিত 997 00:50:00,450 --> 00:50:02,140 একই ক্যাফেটেরিয়া ট্রে. 998 00:50:02,140 --> 00:50:06,080 >> খারাপ লোক যথেষ্ট চালাক হয় তাই আপনি যদি আক্রমণ কোড করা, আক্রমণ কোড হামলা 999 00:50:06,080 --> 00:50:07,960 কোড, এবং ভাগ্যবান যথেষ্ট পেতে - 1000 00:50:07,960 --> 00:50:11,630 আপনি - প্রায়ই শুদ্ধাশুদ্ধি মাধ্যমে , যে লাল ফিরতি ঠিকানা মুছে ফেলা 1001 00:50:11,630 --> 00:50:14,360 ঠিকানা ও বিজ্ঞপ্তি খুব উপরের. 1002 00:50:14,360 --> 00:50:16,830 0835C080 লক্ষ্য করুন. 1003 00:50:16,830 --> 00:50:20,650 এটি জন্য পিছন আপ উপরে লেখা কারণ আমরা সম্ভবত পরিদর্শন করব. 1004 00:50:20,650 --> 00:50:22,050 এই যে সংখ্যা. 1005 00:50:22,050 --> 00:50:25,790 >> খারাপ লোক ভাগ্যবান যথেষ্ট বা পায় তাই আপনি যদি লাল মুছে ফেলা স্মার্ট যথেষ্ট 1006 00:50:25,790 --> 00:50:29,480 ঠিকানা সঙ্গে মেমরি স্ট্রিপ সে একরকম আছে যে কোড 1007 00:50:29,480 --> 00:50:34,980 আপনার কম্পিউটারের মধ্যে ইনজেকশনের, যার অনুমান কোড ফিরে যাচ্ছে 1008 00:50:34,980 --> 00:50:38,260 যত তাড়াতাড়ি foo বিন্যাস হিসাবে নির্বাহ করা হয়? 1009 00:50:38,260 --> 00:50:39,440 >> খারাপ লোক এর কোড. 1010 00:50:39,440 --> 00:50:43,610 এই আক্রমণ কোড সুতরাং, AAA যাচাই, আবার, প্রতাপ স্প্যাম পাঠাতে, সমস্ত ফাইল মুছে ফেলা হতে পারে 1011 00:50:43,610 --> 00:50:44,500 আপনার হার্ড ড্রাইভে. 1012 00:50:44,500 --> 00:50:48,740 কিন্তু কি যে সত্যিই একটি স্ট্যাক ওভারফ্লো হয় , অথবা একটি বাফার পদদলিত করা, অথবা একটি 1013 00:50:48,740 --> 00:50:51,060 ওভারফ্লো আক্রমণ বাফার. 1014 00:50:51,060 --> 00:50:54,400 >> এবং এটা অবিশ্বাস্যভাবে, অবিশ্বাস্যভাবে সাধারণ এর এ লিখিত প্রোগ্রাম সঙ্গে এই দিন 1015 00:50:54,400 --> 00:50:58,220 সি, সি + +, এবং এমনকি কিছু অন্যান্য ভাষাসমূহ. 1016 00:50:58,220 --> 00:51:02,275 এটা ভীতিকর নোট অন, আমরা করব একটি তামাশা দিয়ে শেষ. 1017 00:51:02,275 --> 00:51:03,230 >> [হাস্য] 1018 00:51:03,230 --> 00:51:04,550 >> বুধবার আপনাকে দেখতে. 1019 00:51:04,550 --> 00:51:07,920 1020 00:51:07,920 --> 00:51:10,310 পরবর্তী CS50 এ - 1021 00:51:10,310 --> 00:51:15,920 তাই আমি আজ ডিস্ক আলো সব আউট না কিন্তু অপেক্ষা করুন, চর্বি বিনামূল্যে দুধ, অর্ধেক ফোন 1022 00:51:15,920 --> 00:51:17,850 বই, কমলার রস আমি আজ যে drank. 1023 00:51:17,850 --> 00:51:20,370 1024 00:51:20,370 --> 00:51:22,780 USB তারের, একটা রেঞ্চ. 1025 00:51:22,780 --> 00:51:24,800 >> [সঙ্গীত বাজানো]