1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:11,261 [সঙ্গীত বাজানো] 3 00:00:11,261 --> 00:00:12,640 >> ডেভিড জে MALAN: ঠিক আছে. 4 00:00:12,640 --> 00:00:14,525 এটি CS50. 5 00:00:14,525 --> 00:00:16,009 এবং এই সপ্তাহে 5 শুরু. 6 00:00:16,009 --> 00:00:18,050 এবং আপনি লক্ষ্য করে হতে পারে, কিছু উপাদান 7 00:00:18,050 --> 00:00:21,050 একটু বেশি হচ্ছে জটিল, একটু ঘন. 8 00:00:21,050 --> 00:00:24,560 >> এবং এটি বিশেষ করে যদি খুব সহজ আপনি কিছু সময়ের জন্য অভ্যাস করেছি 9 00:00:24,560 --> 00:00:28,600 সবচেয়ে নিচে হিজিবিজি চেষ্টা করা আমরা কি কিছু, আমরা বর্গ বলছে. 10 00:00:28,600 --> 00:00:31,626 কিন্তু যে সম্ভবত না, বুঝতে পারছি আদর্শ প্রাতিষ্ঠানিক পদ্ধতির 11 00:00:31,626 --> 00:00:34,250 উপাদান এই ধরনের শেখার, এবং উপাদান আরো সাধারণভাবে. 12 00:00:34,250 --> 00:00:37,250 এবং তাই আমরা সন্তুষ্ট হয় যে CS50 এর নিজস্ব Gheng ঘোষণা 13 00:00:37,250 --> 00:00:39,780 গং প্রস্তুত শুরু হয়েছে নোট ক্যানোনিকাল সেট 14 00:00:39,780 --> 00:00:42,100 কোর্সের জন্য, আশা যা এই, যে, এক 15 00:00:42,100 --> 00:00:44,030 শুধুমাত্র একটি হিসাবে পরিবেশন করা রেফারেন্স এবং একটি সম্পদ 16 00:00:44,030 --> 00:00:47,410 উপাদান পর্যালোচনা এবং যাচ্ছে ফিরে উপাদান মাধ্যমে থাকতে পারে 17 00:00:47,410 --> 00:00:51,230 প্রায় আপনি প্রথম সময় পলান কিন্তু এছাড়াও, যাতে আপনার মাথা হতে পারে আরো 18 00:00:51,230 --> 00:00:53,740 নিচে, যখন এটি তুলনায় আপ বক্তৃতা করার সময় আসে, 19 00:00:53,740 --> 00:00:56,960 আপনি ব্যস্ত হতে পারে, যাতে আরো, thoughtfully হিসাবে 20 00:00:56,960 --> 00:00:59,170 আরো scribbly বিরোধিতা. 21 00:00:59,170 --> 00:01:02,510 >> সঙ্গে বলেন যে, আপনি খুঁজে পাবেন ওয়েবসাইট এই যেমন নথি হয়. 22 00:01:02,510 --> 00:01:04,660 এবং খেয়াল করুন, উপরের বাম এ আছে, না শুধুমাত্র বিষয়বস্তু একটি টেবিল, 23 00:01:04,660 --> 00:01:06,920 কিন্তু সময় কোড যে অবিলম্বে আপনি তিড়িং লাফ হবে 24 00:01:06,920 --> 00:01:09,077 যথাযথ অংশ ভিডিও অনলাইন. 25 00:01:09,077 --> 00:01:11,410 এবং এখানে কি চ্যাং করা হয়েছে মূলত, নথিভুক্ত করা হয় 26 00:01:11,410 --> 00:01:13,340 কি এই ঘটেছে বিশেষ বক্তৃতা. 27 00:01:13,340 --> 00:01:16,370 এবং বক্তৃতা অনেক ইতিমধ্যে অনলাইন এখন এই URL সঙ্গে. 28 00:01:16,370 --> 00:01:20,110 এবং আমরা বাকি পোস্ট চালিয়ে যাব এই সপ্তাহ শেষে যারা, 29 00:01:20,110 --> 00:01:22,380 তাই যে সম্পদ সুবিধা নিতে না. 30 00:01:22,380 --> 00:01:25,740 >> তাই আরও ঝামেলা ছাড়া, আমরা ফিরে ছুলা শুরু 31 00:01:25,740 --> 00:01:28,180 হয়েছে যে স্তর কিছু সময়ের জন্য স্ট্রিং. 32 00:01:28,180 --> 00:01:30,670 এবং আমরা একটি স্ট্রিং কি বলে নি আসলে গত সপ্তাহে? 33 00:01:30,670 --> 00:01:31,720 34 00:01:31,720 --> 00:01:32,900 তাই গৃহস্থালি তারকা. 35 00:01:32,900 --> 00:01:34,900 এবং গৃহস্থালি তারা, ভাল, কি যে সত্যিই মানে কি? 36 00:01:34,900 --> 00:01:37,150 আচ্ছা, এই সব সময়, আমরা করেছি যদি একটি ফাংশন আহ্বান করা, 37 00:01:37,150 --> 00:01:40,450 getString, এবং সংরক্ষণ মত তথাকথিত ফেরত 38 00:01:40,450 --> 00:01:42,910 একটি মধ্যে GetString মান ভেরিয়েবল বলা এর 39 00:01:42,910 --> 00:01:47,721 লেখা আমরা করছি স্ট্রিং এর টাইপ আপ আছে উপরে কোড লাইন. 40 00:01:47,721 --> 00:01:49,970 আমি দেখতে যখন এটি শুধুমাত্র আমার হস্তাক্ষর এখানে বিবর্ধিত 41 00:01:49,970 --> 00:01:51,930 আমি এই ঠিক কিভাবে নৃশংস বুঝতে পারছি না. 42 00:01:51,930 --> 00:01:54,180 >> তবে, এর অনুমান করা যাক, ডান দিকে 43 00:01:54,180 --> 00:01:57,070 তবু, একটি যুক্তিসঙ্গত কি চিত্রাঙ্কন 44 00:01:57,070 --> 00:01:58,880 এই সব যাচ্ছে GetString সঙ্গে সঙ্গে সময়. 45 00:01:58,880 --> 00:02:00,380 getString, অবশ্যই, একটি স্ট্রিং পায়. 46 00:02:00,380 --> 00:02:01,691 কিন্তু যে সত্যিই কি মানে? 47 00:02:01,691 --> 00:02:04,190 এটা একটি খণ্ড পায় মানে অপারেটিং সিস্টেম থেকে মেমরি 48 00:02:04,190 --> 00:02:06,040 একটি ফাংশন কল করে, malloc আহবান. 49 00:02:06,040 --> 00:02:07,390 কিন্তু আরো যে পরে. 50 00:02:07,390 --> 00:02:09,139 এবং তারপর এটি এর মান পূরণ করা মেমরি যে তাল 51 00:02:09,139 --> 00:02:11,764 অক্ষর দিয়ে ব্যবহারকারী আছে , টাইপ দ্বারা অনুসরণ, অবশ্যই, 52 00:02:11,764 --> 00:02:14,800 একটি নাল অক্ষর, বা ব্যাকস্ল্যাশ খুব শেষে শূন্য. 53 00:02:14,800 --> 00:02:18,280 >> এদিকে, বাম দিকে এই গল্প, এই সব সময়, 54 00:02:18,280 --> 00:02:20,850 আমরা এর মত একটি পরিবর্তনশীল প্রকাশক হয়েছে. 55 00:02:20,850 --> 00:02:24,770 এবং যে পরিবর্তনশীল এখন কি একটি পয়েন্টার কলিং শুরু হবে. 56 00:02:24,770 --> 00:02:29,190 এটা যার ভিতরে একটি বাক্সে না আমরা স্ট্রিং করা, Daven, জন্মগতভাবে, 57 00:02:29,190 --> 00:02:32,550 বরং আমরা যে বর্গক্ষেত্র রাখা বাম কি ঠিক বাক্স? 58 00:02:32,550 --> 00:02:34,890 59 00:02:34,890 --> 00:02:35,390 হ্যাঁ? 60 00:02:35,390 --> 00:02:37,118 >> শ্রোতা: এর ঠিকানা যেখানে এটি মেমরি অবস্থিত. 61 00:02:37,118 --> 00:02:38,118 >> ডেভিড জে MALAN: যথাযথভাবে. 62 00:02:38,118 --> 00:02:40,690 Daven যেখানে এর ঠিকানা মেমরি অবস্থিত. 63 00:02:40,690 --> 00:02:44,650 এবং Daven সব, অবস্থিত যেখানে কোনটাই, কিন্তু বিশেষভাবে অঙ্ক 64 00:02:44,650 --> 00:02:45,150 কি? 65 00:02:45,150 --> 00:02:46,311 66 00:02:46,311 --> 00:02:46,810 হ্যাঁ? 67 00:02:46,810 --> 00:02:47,460 >> শ্রোতা: প্রথম অক্ষর. 68 00:02:47,460 --> 00:02:50,209 >> ডেভিড জে MALAN: প্রথম অক্ষর এই ক্ষেত্রে Daven,, যা, 69 00:02:50,209 --> 00:02:53,820 আমি ইচ্ছামত ছিল প্রস্তাবিত এবং unrealistically 1, OX1, 70 00:02:53,820 --> 00:02:55,910 যা শুধু অর্থ 1 হেক্সাডেসিমেল সংখ্যা. 71 00:02:55,910 --> 00:02:57,993 কিন্তু এটা সম্ভবত যাচ্ছে অনেক বড় সংখ্যা হতে 72 00:02:57,993 --> 00:03:01,260 আমরা আঁকা হতে পারে একটি উপসর্গ হিসাবে একটি 0x সঙ্গে, 73 00:03:01,260 --> 00:03:02,806 একটি হেক্সাডেসিমেল অক্ষর প্রতিনিধিত্বমূলক. 74 00:03:02,806 --> 00:03:05,930 এবং আমরা জানি যেখানে প্রয়োজন হবে না, কারণ Daven অক্ষর বাকি 75 00:03:05,930 --> 00:03:09,860 কারণ, কি সহজ নকশা সিদ্ধান্ত অনেক বছর আগে তৈরি করা হয়েছিল যে? 76 00:03:09,860 --> 00:03:10,548 হ্যাঁ? 77 00:03:10,548 --> 00:03:11,651 >> শ্রোতা: ব্যাকস্ল্যাশ 0. 78 00:03:11,651 --> 00:03:12,900 ডেভিড জে MALAN: হ্যাঁ, ঠিক. 79 00:03:12,900 --> 00:03:18,100 ব্যাকস্ল্যাশ 0 যদ্যপি আপনি পারবেন রৈখিক সময়, স্ট্রিং, তর্ক করতে, 80 00:03:18,100 --> 00:03:20,400 বাম থেকে ডান পদব্রজে ভ্রমণ, একটি লুপ জন্য, অথবা একটি সময় সঙ্গে 81 00:03:20,400 --> 00:03:22,608 লুপ, বা কিছু মত যে, এখানে, ওহ, নির্ধারণ 82 00:03:22,608 --> 00:03:24,751 এই বিশেষ স্ট্রিং এর শেষে. 83 00:03:24,751 --> 00:03:27,000 এ ঠিকানা দিয়ে তাই একটি স্ট্রিং এর শুরু, 84 00:03:27,000 --> 00:03:30,290 আমরা সম্পূর্ণতা অ্যাক্সেস করতে পারেন এটি, এই সব কারণ যখন, 85 00:03:30,290 --> 00:03:32,030 একটি স্ট্রিং শুধুমাত্র একটি গৃহস্থালি তারকা হয়েছে. 86 00:03:32,030 --> 00:03:36,370 >> তাই এটি ব্যবহার করতে অবশ্যই জরিমানা CS50 লাইব্রেরি এবং এই বিমূর্ততা, 87 00:03:36,370 --> 00:03:38,440 তাই কথা বলতে, কিন্তু আমরা করব ঠিক দেখতে শুরু 88 00:03:38,440 --> 00:03:41,230 কি যাওয়া হয়েছে এই পুরো সময় নীচে. 89 00:03:41,230 --> 00:03:45,260 তাই আপনি যদি এই উদাহরণ প্রত্যাহার হতে পারে, খুব, শেষ সময় থেকে, 0 তুলনা, 90 00:03:45,260 --> 00:03:47,300 যা আসলে তুলনা না. 91 00:03:47,300 --> 00:03:49,070 কিন্তু আমরা এই সমস্যা সমাধানের শুরু করেন. 92 00:03:49,070 --> 00:03:52,020 >> কিন্তু সম্ভবত একটি সতেজকারক, আমি কেউ আগ্রহ 93 00:03:52,020 --> 00:03:54,261 একটি গোলাপী হাতি আজ, এছাড়াও চ্যাং দ্বারা তৈরি? 94 00:03:54,261 --> 00:03:55,760 কিভাবে সামনে আপনি? [শ্রবণাতীত]. 95 00:03:55,760 --> 00:03:56,660 উপর আসা. 96 00:03:56,660 --> 00:03:58,740 >> এবং ইতিমধ্যে, হিসাবে আপনি আসা পর্যন্ত, আসুন 97 00:03:58,740 --> 00:04:01,670 শুধু একটা মুহূর্ত জন্য বিবেচনা এই কোড আসলে করছেন. 98 00:04:01,670 --> 00:04:04,917 এটা দুই ভেরিয়েবল ঘোষণা এর উপরে, গুলি এবং টন, এবং GetString আহ্বান. 99 00:04:04,917 --> 00:04:08,250 এটি একটি খুব ব্যবহারকারী বন্ধুত্বপূর্ণ প্রোগ্রাম নয় এটা আপনাকে বলতে হয় না, কারণ কি না. 100 00:04:08,250 --> 00:04:10,541 তবে আমরা অনুমান করা যাক সরস অংশ উপর মনোযোগ নিবদ্ধ করে. 101 00:04:10,541 --> 00:04:14,470 এর সমান এবং তারপর যদি আমরা না, , এটা printf, বলতে হবে টন সমান, 102 00:04:14,470 --> 00:04:16,170 আপনি একই জিনিস টাইপ. 103 00:04:16,170 --> 00:04:16,670 হ্যালো. 104 00:04:16,670 --> 00:04:17,050 আপনার নাম কি? 105 00:04:17,050 --> 00:04:17,779 >> Janelle: Janelle. 106 00:04:17,779 --> 00:04:19,529 ডেভিড জে MALAN: Janelle, আপনি দেখা করতে চমৎকার. 107 00:04:19,529 --> 00:04:21,800 আপনার চ্যালেঞ্জ তাই এই হাতির জন্য হাত 108 00:04:21,800 --> 00:04:25,230 আমাদের প্রথম কি একটি ছবি আঁকা হয় যারা প্রথম দুই প্রতিনিধিত্ব করা হচ্ছে 109 00:04:25,230 --> 00:04:25,970 লাইন. 110 00:04:25,970 --> 00:04:28,139 তাই গুলি এবং টন হতে পারে কিভাবে পর্দায় প্রতিনিধিত্ব? 111 00:04:28,139 --> 00:04:30,680 এবং আপনি শুধু সঙ্গে এটি আহরণ করতে পারে এই বড় পর্দায় আপনার আঙুল. 112 00:04:30,680 --> 00:04:31,780 113 00:04:31,780 --> 00:04:34,510 >> তাই দুই অর্ধেক আছে যে সমীকরণ প্রতিটি পাশ. 114 00:04:34,510 --> 00:04:37,760 তাই সেখানে বাম গণ, এবং তারপর ডান GetString. 115 00:04:37,760 --> 00:04:40,540 এবং তারপর টন, বাম আছে এবং তারপর ডান GetString. 116 00:04:40,540 --> 00:04:42,630 সুতরাং আমরা কিভাবে শুরু হতে পারে একটি ছবি আঁকার যে 117 00:04:42,630 --> 00:04:46,340 কি ঘটছে প্রতিনিধিত্ব করে এখানে মেমরি, আপনি বলতে হবে? 118 00:04:46,340 --> 00:04:49,150 এবং আমাকে আপনি ব্যাখ্যা করা যাক যাক হিসাবে আপনি যেতে আপনি কি করছেন. 119 00:04:49,150 --> 00:04:49,820 >> Janelle: ঠিক আছে. 120 00:04:49,820 --> 00:04:58,890 ওয়েল, প্রথমত, এটা জিজ্ঞাসা করা হবে আপনি ইনপুট স্ট্রিং পেতে. 121 00:04:58,890 --> 00:05:00,439 এবং এটা দুঃখিত, ওহ store-- হবে. 122 00:05:00,439 --> 00:05:01,230 ডেভিড জে MALAN: ঠিক আছে. 123 00:05:01,230 --> 00:05:01,730 ভাল. 124 00:05:01,730 --> 00:05:03,330 এবং এই কি বলা হয়? 125 00:05:03,330 --> 00:05:03,950 ঠিক আছে, ওহ. 126 00:05:03,950 --> 00:05:04,450 চালু রাখুন. 127 00:05:04,450 --> 00:05:05,575 আমি ছিন্ন করা মানে না. 128 00:05:05,575 --> 00:05:07,060 Janelle: দুঃখিত. 129 00:05:07,060 --> 00:05:14,237 সুতরাং এটা ইনপুট তা হবে ঠিকানা নিশ্চিত না র. 130 00:05:14,237 --> 00:05:17,320 আমি ঠিক সংখ্যা মনে করতে পারেন না, কিন্তু আমি এটা 0 দিয়ে শুরু হয়েছিল. 131 00:05:17,320 --> 00:05:18,420 >> ডেভিড জে MALAN: এটা ঠিক আছে আমি নম্বর কারণ, 132 00:05:18,420 --> 00:05:19,650 তাই কোন সঠিক উত্তর নেই. 133 00:05:19,650 --> 00:05:22,105 >> Janelle: 0 চাপ দিয়ে শুরু. 134 00:05:22,105 --> 00:05:24,000 >> ডেভিড জে MALAN: ঠিক আছে, তাই উপাদান 0. 135 00:05:24,000 --> 00:05:24,765 নিশ্চিত করুন. 136 00:05:24,765 --> 00:05:28,295 >> Janelle: তারপর যদি শুধু একটি দুটি চিঠি মত 137 00:05:28,295 --> 00:05:30,496 >> ডেভিড জে MALAN: ঠিক আছে, আপনি ফিরে. 138 00:05:30,496 --> 00:05:33,629 >> Janelle: তাই উপাদান 0, এবং তারপর উপাদান 1 বা উপাদান 2. 139 00:05:33,629 --> 00:05:36,670 যা টুকরা এবং ডেভিড জে MALAN: ছবি আপনি ডান এখন অঙ্কন করা হয়? 140 00:05:36,670 --> 00:05:37,690 GetString যাও কল? 141 00:05:37,690 --> 00:05:38,830 অথবা এর ঘোষণা? 142 00:05:38,830 --> 00:05:42,890 >> Janelle: ঘোষণা এর, আমি বিশ্বাস করি. 143 00:05:42,890 --> 00:05:45,980 ওহ, getString, এটা হবে কারণ প্রতিটি [মধ্যে ইনপুট করা? এলাকা. ?] 144 00:05:45,980 --> 00:05:46,510 >> ডেভিড জে MALAN: গুড. 145 00:05:46,510 --> 00:05:47,051 ঠিক. 146 00:05:47,051 --> 00:05:49,300 এমনকি এই কার্যকরভাবে যদিও একটি অ্যারের, রিকল প্রদান করে, 147 00:05:49,300 --> 00:05:53,300 আমরা একটি স্ট্রিং ফিরে পেতে, আমরা করতে পারেন 01 এবং 2 ব্যবহার করে স্ট্রিং মধ্যে সূচক. 148 00:05:53,300 --> 00:05:56,180 টেকনিক্যালি, এই সম্ভবত হয় প্রতিটি ঠিকানা দ্বারা প্রতিনিধিত্ব, 149 00:05:56,180 --> 00:05:57,100 কিন্তু যে সূক্ষ্ম. 150 00:05:57,100 --> 00:06:00,170 >> সুতরাং, অনুমান যদি আমি দ্রুত করতে পারেন আমরা বাকি বন্ধ যেখানে এগিয়ে 151 00:06:00,170 --> 00:06:04,320 শেষ সময়, এক যদি স্ট্রিং, একটি বো ই গ্রাম ছিল 152 00:06:04,320 --> 00:06:10,337 ব্যাকস্ল্যাশ 0, যার ফলে প্রতিনিধিত্বমূলক গেব এর ইনপুট, কিভাবে আমরা এখন প্রতিনিধিত্ব করতে পারে? 153 00:06:10,337 --> 00:06:12,670 এই যে মেমরি হয় getString দ্বারা ফেরত দেয়া হয়েছে? 154 00:06:12,670 --> 00:06:14,415 155 00:06:14,415 --> 00:06:17,610 >> Janelle: এটা হবে একটি চাপ দ্বারা প্রতিনিধিত্ব? 156 00:06:17,610 --> 00:06:18,750 >> ডেভিড জে MALAN: একটি চাপ দ্বারা? 157 00:06:18,750 --> 00:06:19,130 ওয়েল, কোন. 158 00:06:19,130 --> 00:06:21,171 , এর ঠিক pictorially, শুরু করা যাক বলতে আমাকে শুধু এগিয়ে যান 159 00:06:21,171 --> 00:06:25,710 এই গুলি এবং যদি,, এই যে প্রস্তাব getString ফেরত মান. 160 00:06:25,710 --> 00:06:29,482 এবং যদি আপনি 0, 1, 2, এই টানা করেছি, যা , পুরোপুরি যুক্তিসঙ্গত কারণে আমরা 161 00:06:29,482 --> 00:06:30,940 যেমন স্ট্রিং মধ্যে সূচক, করতে পারেন. 162 00:06:30,940 --> 00:06:33,340 তবে সঙ্গে সামঞ্জস্যপূর্ণ হতে শেষ সময়, আমাকে এগিয়ে যান 163 00:06:33,340 --> 00:06:37,310 এবং ইচ্ছামত এই যে প্রস্তাব ঠিকানা 1, এই ঠিকানা 2, 164 00:06:37,310 --> 00:06:39,597 এই তাই ঘোষণা অঙ্ক 3, এবং হয়. 165 00:06:39,597 --> 00:06:41,430 এবং তাই, শুধু সুপার হতে পরিষ্কার, কি যাচ্ছে 166 00:06:41,430 --> 00:06:44,580 যে ফলে এর মধ্যে যেতে প্রথম কোড লাইন, আপনি বলতে হবে? 167 00:06:44,580 --> 00:06:45,420 >> Janelle: ঠিকানা 1? 168 00:06:45,420 --> 00:06:46,420 >> ডেভিড জে MALAN: যথাযথভাবে. 169 00:06:46,420 --> 00:06:47,190 তাই 0x1 মোকাবেলার. 170 00:06:47,190 --> 00:06:48,220 171 00:06:48,220 --> 00:06:51,230 এবং ইতিমধ্যে, আমাকে এগিয়ে যান এবং আপনি কি কাজ করেছি অনেক প্রতিলিপি 172 00:06:51,230 --> 00:06:52,740 এখানে আমার নিজের T যোগ করুন. 173 00:06:52,740 --> 00:06:56,340 আমি গেব টাইপ ছিল আবার, একটি দ্বিতীয় সময়, 174 00:06:56,340 --> 00:07:01,530 GetString সঙ্গে সঙ্গে অনুরোধ জানানো হবে যখন, যেখানে, অবশ্যই, গেব যেতে হবে? 175 00:07:01,530 --> 00:07:02,280 ওয়েল, presumably-- 176 00:07:02,280 --> 00:07:04,935 177 00:07:04,935 --> 00:07:05,975 >> Janelle: এখানে ভালো লেগেছে? 178 00:07:05,975 --> 00:07:06,850 ডেভিড জে MALAN: হ্যাঁ. 179 00:07:06,850 --> 00:07:08,516 Janelle: অথবা এটি একই বাক্সে এছাড়াও? 180 00:07:08,516 --> 00:07:11,940 ডেভিড জে MALAN: আমাকে হাঁ, উত্থাপন করা ঠিক, এই অতিরিক্ত বাক্সে তাই. 181 00:07:11,940 --> 00:07:15,230 কিন্তু কি এখন কি এমনকি, যে আমি এই চমত্কার বন্ধ টানা করেছি, যদিও 182 00:07:15,230 --> 00:07:18,650 together-- 0x1, এই বাস্তবে 0x2-- হয়, 183 00:07:18,650 --> 00:07:25,750 এই এখন, ঠিকানা 0x10 হতে পারে উদাহরণস্বরূপ, এবং 0x11, 0x12 এবং, 184 00:07:25,750 --> 00:07:26,870 এবং তাই ঘোষণা. 185 00:07:26,870 --> 00:07:29,955 এবং তাই, যদি এর ক্ষেত্রে, কি টি এখানে শেষ করতে যাচ্ছে? 186 00:07:29,955 --> 00:07:30,830 >> Janelle: 0x10? 187 00:07:30,830 --> 00:07:31,830 ডেভিড জে MALAN: যথাযথভাবে. 188 00:07:31,830 --> 00:07:33,180 সুতরাং 0x10. 189 00:07:33,180 --> 00:07:34,570 এবং এখন, তাই চূড়ান্ত প্রশ্ন. 190 00:07:34,570 --> 00:07:37,510 আপনি, দ্বারা পর্যন্ত কাজ করতে হয়েছে এখন পর্যন্ত একটি হাতির জন্য hardest. 191 00:07:37,510 --> 00:07:42,650 এখন, আমি কোড থামা যদি আবার, যখন আমি কি, লাইন তিনটি, 192 00:07:42,650 --> 00:07:47,630 এর সমান টি সমান, আমি আসলে কি am আমরা এখানে টানা করেছি তুলনা যে? 193 00:07:47,630 --> 00:07:49,271 >> Janelle: দুই ঠিকানায়? 194 00:07:49,271 --> 00:07:50,270 ডেভিড জে MALAN: যথাযথভাবে. 195 00:07:50,270 --> 00:07:53,350 তাই আমি t সমান সমান গুলি বলছে? 196 00:07:53,350 --> 00:07:56,210 অন্য কথায়, 10 সমান সমান 1 হয়? 197 00:07:56,210 --> 00:07:59,710 এবং অবশ্যই, সুস্পষ্ট উত্তর এখন না, হয়. 198 00:07:59,710 --> 00:08:02,920 তাই এই প্রোগ্রাম শেষ পর্যন্ত আপনি বলতে হবে, মুদ্রণ যাচ্ছে? 199 00:08:02,920 --> 00:08:05,770 200 00:08:05,770 --> 00:08:08,405 >> Janelle: এটা হতে হবে আপনি একই জিনিস টাইপ? 201 00:08:08,405 --> 00:08:11,446 >> ডেভিড জে MALAN: তাই আপনি যদি এর 1 এবং T 10? 202 00:08:11,446 --> 00:08:13,320 >> Janelle: আপনি বিভিন্ন জিনিষ টাইপ করা. 203 00:08:13,320 --> 00:08:13,570 >> ডেভিড জে MALAN: যথাযথভাবে. 204 00:08:13,570 --> 00:08:14,480 আপনি বিভিন্ন জিনিষ টাইপ করা. 205 00:08:14,480 --> 00:08:14,850 ঠিক আছে. 206 00:08:14,850 --> 00:08:16,714 তাই সাধুবাদ একটি বৃত্তাকার, এখানে, যদি আমরা করতে পারে. 207 00:08:16,714 --> 00:08:17,214 [সাধুবাদ] 208 00:08:17,214 --> 00:08:17,708 যে বেদনাদায়ক ছিল. 209 00:08:17,708 --> 00:08:18,208 আমি জানি. 210 00:08:18,208 --> 00:08:19,684 সুন্দরভাবে সম্পন্ন. 211 00:08:19,684 --> 00:08:24,690 তাই এখন দেখুন যদি আমরা না করতে পারেন ফিক্স কি ছিল সরাইয়া জ্বালাতন করা. 212 00:08:24,690 --> 00:08:28,040 এবং অবশ্যই, আমরা আপাততঃ নির্দিষ্ট সময় যা আমি এখন green-- মধ্যে উপস্থাপন করব 213 00:08:28,040 --> 00:08:29,690 আমরা এখানে উন্নত বৈশিষ্ট্য একটি দম্পতি করেনি. 214 00:08:29,690 --> 00:08:32,409 প্রথমত, একটি মানসিক সুস্থতা হিসাবে আমি প্রথম চেক করছি, চেক 215 00:08:32,409 --> 00:08:35,110 এর সমান নাল এবং টি নাল এর সমান হয়. 216 00:08:35,110 --> 00:08:39,440 এবং শুধু পরিষ্কার হবে, যখন বল গুলি বা টন ভালো কোড নাল হতে? 217 00:08:39,440 --> 00:08:43,140 218 00:08:43,140 --> 00:08:44,490 যখন গুলি বা টন নাল হতে পারে. 219 00:08:44,490 --> 00:08:44,990 হ্যাঁ? 220 00:08:44,990 --> 00:08:45,990 >> শ্রোতা: [শ্রবণাতীত]. 221 00:08:45,990 --> 00:08:49,490 222 00:08:49,490 --> 00:08:50,510 >> ডেভিড জে MALAN: যথাযথভাবে. 223 00:08:50,510 --> 00:08:52,840 স্ট্রিং ব্যবহারকারী যে যদি টাইপ উপায় খুব দীর্ঘ হয় 224 00:08:52,840 --> 00:08:56,140 মেমরির মধ্যে মাপসই করা হবে, অথবা কিছু করার যে মত অদ্ভুত কোণ ক্ষেত্রে, 225 00:08:56,140 --> 00:08:59,010 হিসাবে আমরা দেখতে পাবেন আক্ষরিক,, GetString আজ, তার ডকুমেন্টেশন, 226 00:08:59,010 --> 00:09:02,330 এটি হিসাবে নাল ফিরে আসতে হবে বলছেন একটি বিশেষ প্রহরী মান, 227 00:09:02,330 --> 00:09:05,417 বা শুধু ধরণের একটি বিশেষ চিহ্ন যে কিছু ভুল মানে. 228 00:09:05,417 --> 00:09:07,500 তাই আমরা চেক করতে চান, এটি সক্রিয় আউট, কারণ যে 229 00:09:07,500 --> 00:09:09,720 যে নাল একটি খুব বিপজ্জনক মান. 230 00:09:09,720 --> 00:09:14,250 >> প্রায়শই, আপনার সাথে কিছু করতে চেষ্টা করে নাল এটি ক্ষণস্থায়ী একটি ফাংশন জড়িত 231 00:09:14,250 --> 00:09:17,470 ইনপুট হিসাবে, যে ফাংশন instance-- জন্য খুব এটি সঙ্গে, বিপর্যস্ত এবং হবে পারে, 232 00:09:17,470 --> 00:09:19,090 আপনার পুরো প্রোগ্রাম নিচে নিতে. 233 00:09:19,090 --> 00:09:22,570 তাই এই তৃতীয় লাইন এখন শুধু একটি মানসিক সুস্থতা হয় যদি আপনি হবে, ত্রুটি পরীক্ষা পরীক্ষা. 234 00:09:22,570 --> 00:09:25,450 যে জন্য এখন একটি ভাল অভ্যাস যে কোন সময়ে আমাদের মধ্যে পেতে আমরা 235 00:09:25,450 --> 00:09:28,050 একটি মান ব্যবহার করার চেষ্টা করুন যে সম্ভাব্য নাল হতে পারে. 236 00:09:28,050 --> 00:09:32,000 >> এখন, এখানে চতুর্থ লাইন, "যদি strcmp (গুলি, T)," ভাল, 237 00:09:32,000 --> 00:09:33,180 কি উল্লেখ যে? 238 00:09:33,180 --> 00:09:36,750 ভাল, আমরা এই খুব সংক্ষিপ্ত একটি ছিল স্ট্রিং তুলনা নামে ফাংশন. 239 00:09:36,750 --> 00:09:40,370 এবং জীবন তার উদ্দেশ্য তুলনা করা হয় দ্বিতীয় বিরুদ্ধে তার প্রথম যুক্তি, 240 00:09:40,370 --> 00:09:44,640 কিন্তু তাদের ঠিকানা পদ, আমরা একটি মুহূর্ত অজানতে করেনি 241 00:09:44,640 --> 00:09:48,270 আগে লাল কোড সঙ্গে, কিন্তু বরং ঐ দুটি তুলনা 242 00:09:48,270 --> 00:09:53,210 মনুষ্যোচিত স্বজ্ঞাত স্ট্রিং এই বিরুদ্ধে, এই তুলনা উপায়, 243 00:09:53,210 --> 00:09:56,690 এই, এই বিরুদ্ধে, এবং বিরুদ্ধে তারপর বাঁধন যখন এক এবং যদি 244 00:09:56,690 --> 00:09:59,590 বা আমার আঙ্গুলের উভয় একটি ব্যাকস্ল্যাশ 0 হিট. 245 00:09:59,590 --> 00:10:04,530 সুতরাং কেউ বছর আগে বাস্তবায়িত strcmp কার্যকারিতা আমাদের জন্য বাস্তবায়ন 246 00:10:04,530 --> 00:10:08,890 আমরা অর্জিত হবে আশা যে মাত্র দুই সহজ মান পরীক্ষা করা হয়. 247 00:10:08,890 --> 00:10:14,929 >> এখন সত্যি, আমি অঙ্কন রাখা এই বিভিন্ন সংখ্যার সকল. 248 00:10:14,929 --> 00:10:17,470 কিন্তু বাস্তবতা আমি চলেছি, হয় সম্পূর্ণ সময় এই পর্যন্ত তৈরীর. 249 00:10:17,470 --> 00:10:19,580 তাই আমাকে এগিয়ে যান এবং এই আউট হিজিবিজি 250 00:10:19,580 --> 00:10:23,100 একটি বিন্দু করা যে, শেষে দিনের এবং অগ্রগতিশীল, 251 00:10:23,100 --> 00:10:30,160 আমরা সত্যিই যত্নশীল যাচ্ছেন না কি জিনিস আসলে ঠিকানাগুলি 252 00:10:30,160 --> 00:10:30,790 মেমরি. 253 00:10:30,790 --> 00:10:34,320 তাই আমি এই আঁকা যাচ্ছে না এত আর সংখ্যার ধরণের, 254 00:10:34,320 --> 00:10:38,970 আমি দূরে এই মাত্র একটি বিমূর্ত আছি শুধু তীরচিহ্ন সঙ্গে আরো বন্ধুত্বপূর্ণ সামান্য. 255 00:10:38,970 --> 00:10:42,060 >> অন্য কথায়, একটি পয়েন্টার হয়, ভাল, এর ঠিক আক্ষরিক, এটি আঁকা যাক 256 00:10:42,060 --> 00:10:45,430 একটি পয়েন্টার হিসাবে, একটি তীর প্রতি নির্দেশ , অন্য কিছু থেকে নিজেকে থেকে 257 00:10:45,430 --> 00:10:48,280 এবং সম্পর্কে খুব বেশী চিন্তা করবেন না এই ঠিকানার minutia 258 00:10:48,280 --> 00:10:49,910 যা, আবার, আমি যাহাই হউক না কেন আপ. 259 00:10:49,910 --> 00:10:52,680 কিন্তু আমরা যারা অ্যাড্রেস দেখতে পাবেন, কখনও কখনও, কোড ডিবাগ করার সময়. 260 00:10:52,680 --> 00:10:56,450 >> এখন এদিকে, এই প্রোগ্রাম এখানে সংশোধন করা হয়েছে, অবশ্যই, 261 00:10:56,450 --> 00:10:58,720 তুলনা দ্বারা যে সমস্যা যারা দুই স্ট্রিং. 262 00:10:58,720 --> 00:11:00,260 কিন্তু আমরা অন্য সমস্যার মধ্যে স্থাপিত হয়. 263 00:11:00,260 --> 00:11:03,180 এই কপি থেকে শেষ সময় প্রোগ্রাম 264 00:11:03,180 --> 00:11:06,880 যদ্দ্বারা, আমি পুঁজিতে করার চেষ্টা ছিল একটি স্ট্রিং শুধু প্রথম অক্ষর. 265 00:11:06,880 --> 00:11:09,620 কিন্তু উপসর্গ কি ছিল আমরা যখন শেষ সময় দেখেছি 266 00:11:09,620 --> 00:11:14,150 একটি ব্যবহারকারী মত একটি মান টাইপ ছোট হাতের মধ্যে গেব, এর জন্য, 267 00:11:14,150 --> 00:11:19,310 তারপর আমরা, টি এর মধ্যে নিয়োগ সেখানে তৃতীয় লাইন হিসাবে, 268 00:11:19,310 --> 00:11:22,900 এবং তারপর আমি করার চেষ্টা টি বন্ধনী 0 পুঁজিতে? 269 00:11:22,900 --> 00:11:25,950 এর প্রভাব কী ছিল টি বন্ধনী 0 এখানে পরিবর্তন? 270 00:11:25,950 --> 00:11:27,150 >> শ্রোতা: এটা পরিবর্তন. 271 00:11:27,150 --> 00:11:29,360 >> ডেভিড জে MALAN: হ্যাঁ, আমি ভাল, এর পরিবর্তন. 272 00:11:29,360 --> 00:11:31,050 সত্যিই কি ঘটছে ছিল না? 273 00:11:31,050 --> 00:11:34,130 ওয়েল, আমি পরিষ্কার করতে পারেন আমাকে যদি দেখতে দিন এই ছবি আপ, হিসাবে অনুসরণ করে. 274 00:11:34,130 --> 00:11:41,390 >> এর হয়, আবার, শব্দ গ্রাম, এ, বি, ই, ব্যাকস্ল্যাশ, 0, এবং এর 275 00:11:41,390 --> 00:11:44,084 আমরা একটি বক্স হিসাবে অঙ্কন চালিয়ে যাব এখানে, কিন্তু কোন ঠিকানা. 276 00:11:44,084 --> 00:11:45,250 এর জিনিষ আপ নির্মাণ বন্ধ করা যাক. 277 00:11:45,250 --> 00:11:47,510 এর মাত্র একটি ছবি আঁকা শুরু করা যাক বিশ্বের সহজতর করা. 278 00:11:47,510 --> 00:11:52,640 >> আমি পংক্তি টন সঙ্গে টি ডিক্লেয়ার, যে মেমরি যে তাল সৃষ্টি করে. 279 00:11:52,640 --> 00:11:55,850 স্কয়ার 32 হতে হবে অধিকাংশ কম্পিউটারে বিট. 280 00:11:55,850 --> 00:11:59,530 আসলে, যদি আপনি কি কখনো একটি শোনা করেছি কম্পিউটার, একটি 32 বিট আর্কিটেকচার হচ্ছে 281 00:11:59,530 --> 00:12:03,000 সত্যিই অভিনব কথা বলতে, যে শুধু এটি 32 বিট অ্যাড্রেস ব্যবহার করে. 282 00:12:03,000 --> 00:12:05,370 এবং সরাইয়া একটি প্রযুক্তিগত হিসাবে, আপনি কি কখনও বিস্ময়ের উদ্রেক করেছি 283 00:12:05,370 --> 00:12:09,630 কেন পুরোনো কম্পিউটার, আসলে আপনি যদি উপস্থিত RAM প্রচুর সঙ্গে স্যুপ তাদের করার চেষ্টা করে, 284 00:12:09,630 --> 00:12:12,360 শুধুমাত্র একটি সর্বোচ্চ হতে পারে র্যাম চার গিগাবাইট, 285 00:12:12,360 --> 00:12:14,860 ভাল যে আক্ষরিক, কারণ, আপনার পুরাতন কম্পিউটার পারা শুধুমাত্র 286 00:12:14,860 --> 00:12:17,250 4 হিসাবে হিসাবে উচ্চ গণনা বিলিয়ন, 4 বিলিয়ন বাইট, 287 00:12:17,250 --> 00:12:20,590 কারণ এটি 32 বিট ব্যবহার করা হয় ঠিকানার জন্য সংখ্যা. 288 00:12:20,590 --> 00:12:23,260 >> কিন্তু কোনো ক্ষেত্রে, এই মধ্যে উদাহরণস্বরূপ, গল্প এর অনেক সহজ. 289 00:12:23,260 --> 00:12:27,250 টি শুধু আরেকটি পয়েন্টার, বা সত্যিই একটি গৃহস্থালি তারকা, ওরফে পংক্তি. 290 00:12:27,250 --> 00:12:30,860 এবং কিভাবে আমি এই ছবি আপডেট করতে চান না এখন কোড যে দ্বিতীয় লাইন দিয়ে, 291 00:12:30,860 --> 00:12:31,950 বিন্দু পরে, বিন্দু, বিন্দু? 292 00:12:31,950 --> 00:12:35,845 আমি যখন স্ট্রিং টি, এর সেমিকোলন সমান এই ছবি কিভাবে পরিবর্তন করে? 293 00:12:35,845 --> 00:12:37,500 294 00:12:37,500 --> 00:12:38,000 হ্যাঁ? 295 00:12:38,000 --> 00:12:38,916 >> শ্রোতা: [শ্রবণাতীত]. 296 00:12:38,916 --> 00:12:41,087 297 00:12:41,087 --> 00:12:42,020 >> ডেভিড জে MALAN: হ্যাঁ. 298 00:12:42,020 --> 00:12:42,600 ঠিক. 299 00:12:42,600 --> 00:12:45,620 আমি শুধু থেকে একটি তীর করা একই ঠিকানায় টি বাক্স, 300 00:12:45,620 --> 00:12:47,570 একই প্রথম চিঠি দিয়েছেন. 301 00:12:47,570 --> 00:12:50,850 বা টেকনিক্যালি, যদি এই লোক, 0x1 এখনও ছিল 302 00:12:50,850 --> 00:12:53,052 আমি এটা হিসাবে যদিও এখানে 0x1 এবং 0x1 এখানে. 303 00:12:53,052 --> 00:12:54,760 কিন্তু আবার, যারা বজায় রাখে ঠিকানা সম্পর্কে কি? 304 00:12:54,760 --> 00:12:56,345 এটা এখন যে বিষয়গুলি ধারণা. 305 00:12:56,345 --> 00:12:57,720 তাই এই এখানে কি ঘটছে হয়. 306 00:12:57,720 --> 00:13:02,690 অবশ্যই, যদি আপনি না টন বন্ধনী তাই অ্যারে স্বরলিপি, যা 0,, 307 00:13:02,690 --> 00:13:05,650 এর অবশ্যই এবং উন্মুক্তভাবে, এটা দেখে মনে হচ্ছে এখানে একটি অ্যারের আছে মত, 308 00:13:05,650 --> 00:13:07,340 কিন্তু এখন এই অদ্ভুত জিনিস আছে. 309 00:13:07,340 --> 00:13:11,160 যে প্রোগ্রামিং ভাষা জানা, সি,, আপনি এই বৈশিষ্ট্যটি উপলব্ধ 310 00:13:11,160 --> 00:13:14,650 যদ্দ্বারা, টি একটি এমনকি যদি পয়েন্টার, অথবা একটি পয়েন্টার, 311 00:13:14,650 --> 00:13:18,050 আপনি এখনও যে পরিচিত ব্যবহার করতে পারেন আরামদায়ক বর্গাকার বন্ধনী 312 00:13:18,050 --> 00:13:22,520 স্বরলিপি প্রথম উপাদান যেতে, দ্বিতীয় উপাদান, বা কোনো উপাদান বা 313 00:13:22,520 --> 00:13:26,130 যে পয়েন্টার প্রতি নির্দেশ করা হয় যে সম্ভবতঃ, কারণ, এটা 314 00:13:26,130 --> 00:13:29,410 , এই ক্ষেত্রে হিসাবে, হয় কিছু অ্যারে নির্দেশ. 315 00:13:29,410 --> 00:13:30,340 >> তাই কিভাবে আমরা এই ঠিক করব? 316 00:13:30,340 --> 00:13:33,660 এটি একটি যেখানে সত্যি, এই হল প্রথম নজরে একটু অপ্রতিরোধ্য. 317 00:13:33,660 --> 00:13:35,340 কিন্তু এখানে একটি নতুন এবং উন্নত সংস্করণ. 318 00:13:35,340 --> 00:13:37,460 >> সুতরাং প্রথম, আমি পেয়ে করছি CS50 লাইব্রেরি পরিত্রাণ, 319 00:13:37,460 --> 00:13:41,170 শুধু প্রকৃতপক্ষে যে এটা হয় তা প্রকাশ করার জন্য একটি গৃহস্থালি তারা, শুধু একটি প্রতিশব্দ. 320 00:13:41,170 --> 00:13:43,540 T এবং এছাড়াও একটি গৃহস্থালি তারকা. 321 00:13:43,540 --> 00:13:48,290 কিন্তু কি ঘটছে যে লাইন এর ডান দিকে 322 00:13:48,290 --> 00:13:49,970 টন একটি মান নির্ধারিত হয় যেখানে? 323 00:13:49,970 --> 00:13:50,790 >> যদি malloc কি? 324 00:13:50,790 --> 00:13:51,630 এটা কি strlen এর? 325 00:13:51,630 --> 00:13:52,547 Sizeof (গৃহস্থালি) কি? 326 00:13:52,547 --> 00:13:54,380 কেন নরক এই আছে লাইন চেহারা এত জটিল? 327 00:13:54,380 --> 00:13:55,713 এটা কি একটি উচ্চ পর্যায়ের করছেন? 328 00:13:55,713 --> 00:13:56,482 329 00:13:56,482 --> 00:13:57,440 এটা কি টি সংরক্ষণ এর? 330 00:13:57,440 --> 00:13:58,646 হ্যাঁ? 331 00:13:58,646 --> 00:14:01,104 শ্রোতা: এটা বণ্টন একটি মেমরি স্পেস নির্দিষ্ট পরিমাণ. 332 00:14:01,104 --> 00:14:03,032 এটা সংরক্ষণ করতে আমি অনুমান, অক্ষর [শ্রবণাতীত]. 333 00:14:03,032 --> 00:14:04,032 >> ডেভিড জে MALAN: পারফেক্ট. 334 00:14:04,032 --> 00:14:04,540 পারফেক্ট. 335 00:14:04,540 --> 00:14:06,650 এটি একটি নির্দিষ্ট বণ্টন মেমরি স্পেস এর পরিমাণ 336 00:14:06,650 --> 00:14:08,940 সম্ভবতঃ, ভবিষ্যতে অক্ষর সঞ্চয়. 337 00:14:08,940 --> 00:14:11,310 এবং বিশেষ করে, যদি malloc সুতরাং কি ফিরে? 338 00:14:11,310 --> 00:14:13,114 339 00:14:13,114 --> 00:14:14,851 >> শ্রোতা: [শ্রবণাতীত] রিটার্নিং? 340 00:14:14,851 --> 00:14:15,850 ডেভিড জে MALAN: যথাযথভাবে. 341 00:14:15,850 --> 00:14:18,850 যে মেমরি ঠিকানা ফিরে, যা বলছে এর অভিনব উপায়, 342 00:14:18,850 --> 00:14:21,640 ঠিকানা ফেরৎ যে মেমরি প্রথম বাইট. 343 00:14:21,640 --> 00:14:25,460 আমাকে মনে রাখবেন উপর ভার হয় কত স্মৃতি আমি আসলে 344 00:14:25,460 --> 00:14:27,140 বরাদ্দ বা জন্য malloc জিজ্ঞাসা. 345 00:14:27,140 --> 00:14:28,384 >> এখন যে কত হয়? 346 00:14:28,384 --> 00:14:30,550 ওয়েল, যদিও এখানে প্রথম বন্ধনী অনেক, 347 00:14:30,550 --> 00:14:32,970 যদি malloc শুধুমাত্র একটি একক যুক্তি লাগে. 348 00:14:32,970 --> 00:14:37,250 এবং আমি এর strlen উল্লেখ, তাই দিতে করছি আমার অনেক বাইট এর মধ্যে আছে, 349 00:14:37,250 --> 00:14:37,800 কিন্তু এক যোগ করুন. 350 00:14:37,800 --> 00:14:38,300 কেন? 351 00:14:38,300 --> 00:14:39,030 352 00:14:39,030 --> 00:14:39,530 হ্যাঁ? 353 00:14:39,530 --> 00:14:40,840 >> শ্রোতা: ব্যাকস্ল্যাশ 0. 354 00:14:40,840 --> 00:14:41,840 ডেভিড জে MALAN: যথাযথভাবে. 355 00:14:41,840 --> 00:14:43,423 আমরা একটু গৃহস্থালি কাজ পেয়েছেন. 356 00:14:43,423 --> 00:14:45,970 একটি ব্যাকস্ল্যাশ আছে, কারণ তাই 0, আমরা ভাল মনে রাখবেন, যে চাই. 357 00:14:45,970 --> 00:14:47,310 অন্যথায়, আমরা চলুন একটি স্ট্রিং তৈরি করতে যে 358 00:14:47,310 --> 00:14:49,170 যে বিশেষ টারমিনেটর নেই. 359 00:14:49,170 --> 00:14:52,640 >> এদিকে, শুধু সুপার হতে পোঁদ, আমি sizeof (গৃহস্থালি) আছে 360 00:14:52,640 --> 00:14:55,730 ধরো কেউ আমার রান না CS50 প্রয়োগ করে কোড, 361 00:14:55,730 --> 00:14:58,220 কিন্তু হয়তো একটি ভিন্ন কম্পিউটার পুরাপুরি যেখানে চিহ্ন 362 00:14:58,220 --> 00:15:01,470 কনভেনশন দ্বারা, এক বাইট, কিন্তু দুই বাইট, বা যে চেয়ে বড় কিছু. 363 00:15:01,470 --> 00:15:04,490 এটা শুধু সুপার হতে হয়, ত্রুটি সুপার বিমুখ. 364 00:15:04,490 --> 00:15:06,940 যদিও বাস্তবে, এটা সম্ভবত 1 হতে যাচ্ছে. 365 00:15:06,940 --> 00:15:11,490 >> এখন এদিকে, আমি এগিয়ে যান এবং কপি স্ট্রিং, টি বন্ধনী আমি টন বন্ধনী এর সমান. 366 00:15:11,490 --> 00:15:14,962 আমি গত সপ্তাহে এর মুলতবি হবে সোর্স কোড যাচ্ছে তা দেখতে. 367 00:15:14,962 --> 00:15:17,670 কী takeaway, এবং কিন্তু কারণ আমি এখন সবুজ কোড করা 368 00:15:17,670 --> 00:15:22,520 , যে শেষ লাইন কারণ টি বন্ধনী 0, toupper, সমান 369 00:15:22,520 --> 00:15:25,230 এর প্রভাব রয়েছে ভিত্তি, যা স্ট্রিং? 370 00:15:25,230 --> 00:15:26,960 টন এবং / অথবা এর? 371 00:15:26,960 --> 00:15:29,280 372 00:15:29,280 --> 00:15:30,580 কোড যে শেষ লাইন. 373 00:15:30,580 --> 00:15:32,930 374 00:15:32,930 --> 00:15:35,560 >> কি কারণ শুধু, টি , এই সময় ঘটেছে 375 00:15:35,560 --> 00:15:41,500 আমি সামান্য যে শেষ ধাপে পূর্বাবস্থায় যদি, আমি malloc কল যখন, কি হয়, ঘটেছে 376 00:15:41,500 --> 00:15:45,380 আমি মূলত মেমরি একটি খণ্ড পেতে যে মূল হিসাবে একই আকার, 377 00:15:45,380 --> 00:15:47,020 যে গাণিতিক কারণ আমি. 378 00:15:47,020 --> 00:15:50,920 আমি অঙ্ক টন মধ্যে সংরক্ষণ করছি মেমরি যে তাল. 379 00:15:50,920 --> 00:15:53,370 এমনকি এই সুন্দর দেখায় যদিও এবং, সুন্দর সুন্দর এবং ফাঁকা, 380 00:15:53,370 --> 00:15:56,882 বাস্তবতা কি আমরা করব, আছে হয় এখানে, কলিং আবর্জনা মান রাখা. 381 00:15:56,882 --> 00:15:59,340 মেমরি যে তাল পারে খুব ভাল আগে ব্যবহার করা হয়েছে, 382 00:15:59,340 --> 00:16:00,940 কয়েক সেকেন্ড, কয়েক মিনিট আগে. 383 00:16:00,940 --> 00:16:04,410 তাই একেবারে সংখ্যা হতে পারে শুধু দুর্ঘটনা আছে বা অক্ষর,. 384 00:16:04,410 --> 00:16:08,580 কিন্তু তারা আমি, যতক্ষণ না বৈধ না হন নিজেকে এই মেমরি খণ্ড পূরণ 385 00:16:08,580 --> 00:16:12,510 প্রকৃত অক্ষর দিয়ে, আমি একটা লুপ আছে যে না. 386 00:16:12,510 --> 00:16:13,180 ঠিক আছে? 387 00:16:13,180 --> 00:16:16,180 >> সুতরাং এখন, শীর্ষবিন্দু এই তিনটি উদাহরণ 388 00:16:16,180 --> 00:16:20,730 যে আপাতদৃষ্টিতে, শেষ সময় ভাঙ্গা ছিল এই সোয়াপ উদাহরণস্বরূপ, এই ফাংশন 389 00:16:20,730 --> 00:16:23,670 অনুভূতি কাজ এটি একটি এবং খ আনা হয়. 390 00:16:23,670 --> 00:16:25,620 কিন্তু এটা কি অন্য অর্থে কাজ না করে? 391 00:16:25,620 --> 00:16:27,616 392 00:16:27,616 --> 00:16:28,614 হ্যাঁ? 393 00:16:28,614 --> 00:16:29,612 >> শ্রোতা: [শ্রবণাতীত]. 394 00:16:29,612 --> 00:16:35,600 395 00:16:35,600 --> 00:16:36,700 >> ডেভিড জে MALAN: যথাযথভাবে. 396 00:16:36,700 --> 00:16:39,530 আমি এই ফাংশন কল ছিল উদাহরণস্বরূপ another-- থেকে, 397 00:16:39,530 --> 00:16:42,870 , যেখানে প্রধান মত একটি ফাংশন থেকে আমি আমি একটি পরিবর্তনশীল, x এবং y আছে 398 00:16:42,870 --> 00:16:46,160 গত সপ্তাহে, একই কোড, এবং আমি x এবং y পাস 399 00:16:46,160 --> 00:16:49,860 অদলবদল, এবং তারপর Swap-- এই কল, অবশ্যই, সঠিক সংস্করণ 400 00:16:49,860 --> 00:16:52,220 আমরা সম্পর্কে কি see-- এটা কাজ করে নি. 401 00:16:52,220 --> 00:16:53,770 তাই ফিক্স কি? 402 00:16:53,770 --> 00:16:56,850 >> ওয়েল, তাই ঠিক করা পরিষ্কার, আমাকে এগিয়ে যান 403 00:16:56,850 --> 00:17:05,450 and-- দ্বিতীয় আমাকে এখানে এক দিন, এবং দেখতে আমি গত এক, দেখাতে পারেন যা 404 00:17:05,450 --> 00:17:12,464 আমি খুঁজে পেতে পারেন যদি এর দেখতে দিন in-- হবে এই বাস্তব fast-- ঠিক আছে, [শ্রবণাতীত]. 405 00:17:12,464 --> 00:17:18,440 406 00:17:18,440 --> 00:17:19,240 ঠিক আছে, এটা আছে. 407 00:17:19,240 --> 00:17:21,000 তাই আমি ঠিক টাইপ করছি কমান্ড উপেক্ষা করা. 408 00:17:21,000 --> 00:17:23,780 আমি এটা উদ্ধার করতে চান শেষ মিনিটে একটি উদাহরণ 409 00:17:23,780 --> 00:17:27,960 শেষ সময়, থেকে যা এখন কোন অদল বদল বলা হয়. 410 00:17:27,960 --> 00:17:30,200 >> তাই কোন অদল বদল যেখানে আমরা বাকি শেষ সময় বন্ধ 411 00:17:30,200 --> 00:17:32,930 যদ্দ্বারা, আমি সক্রিয়া 1 x এবং 2 যাও y. 412 00:17:32,930 --> 00:17:35,840 আমি তারপর 1 এবং 2 ক্ষণস্থায়ী, অদলবদল কল. 413 00:17:35,840 --> 00:17:37,930 এবং তারপর এই ফাংশন কিছু অনুভূতি কাজ, 414 00:17:37,930 --> 00:17:40,750 কিন্তু এটা কোন স্থায়ী ছিল x এবং y উপর প্রভাব. 415 00:17:40,750 --> 00:17:45,430 তাই হাতের প্রশ্ন কিভাবে এখন, হয় আমরা আসলে এই সমস্যা ঠিক করব? 416 00:17:45,430 --> 00:17:47,820 হাতে সমাধান কি? 417 00:17:47,820 --> 00:17:53,150 >> ওয়েল, আজকের নতুন যা swap.c, মধ্যে, পার্থক্য কয়েক বিজ্ঞপ্তি. 418 00:17:53,150 --> 00:17:54,700 x এবং y একই. 419 00:17:54,700 --> 00:17:57,250 কিন্তু কি স্পষ্টতই লাইন 25 সম্পর্কে বিভিন্ন? 420 00:17:57,250 --> 00:17:58,880 421 00:17:58,880 --> 00:18:01,715 যদি আপনি মনে রাখবেন, কি আছে নতুন এটি একটি দ্বিতীয় পূর্বে মত লাগছিল? 422 00:18:01,715 --> 00:18:02,565 >> শ্রোতা: [শ্রবণাতীত]. 423 00:18:02,565 --> 00:18:03,440 >> ডেভিড জে MALAN: হ্যাঁ. 424 00:18:03,440 --> 00:18:06,680 তাই ampersands একটি নতুন টুকরা বাক্য গঠন না শুধুমাত্র এই প্রোগ্রাম, 425 00:18:06,680 --> 00:18:08,560 কিন্তু আরো সাধারণভাবে CS50 মধ্যে. 426 00:18:08,560 --> 00:18:10,680 তারিখ থেকে, আমি মনে করি না আমরা কোনো উদাহরণ দেখা করেছি 427 00:18:10,680 --> 00:18:14,070 অথবা সত্যিই কোন তাদের সম্পর্কে কথা বলত হয়তো, যাও preemptively ছাড়া অন্য বিস্তারিত 428 00:18:14,070 --> 00:18:16,467 অধ্যায়, এই মত একটি ampersand. 429 00:18:16,467 --> 00:18:19,300 ওয়েল, এটা এম্পারসেন্ড এক সক্রিয় আউট নতুন বাক্য গঠন শেষ টুকরা 430 00:18:19,300 --> 00:18:20,174 আমরা জানতে চলুন. 431 00:18:20,174 --> 00:18:23,500 এটা মানে সব কিছু পরিবর্তনশীল এর ঠিকানা. 432 00:18:23,500 --> 00:18:25,070 কি ঠিকানায় এক্স বাস করে? 433 00:18:25,070 --> 00:18:26,510 কিন্তু Y কি অঙ্ক বাস করে? 434 00:18:26,510 --> 00:18:28,700 কারণ যদি আগে মৌলিক সমস্যা 435 00:18:28,700 --> 00:18:32,970 যে x এবং y পাস হচ্ছে ছিল আমরা সত্যিই কাজ করতে চান কপি হিসাবে 436 00:18:32,970 --> 00:18:38,780 একটি ভাণ্ডারী মত অদল বদল প্রদান করা হয় যেখানে x এবং আসলে Y যে বাড়ে মানচিত্র 437 00:18:38,780 --> 00:18:41,910 , যাতে RAM উপস্থিত হয় সোয়াপ যে মানচিত্র অনুসরণ করতে পারেন 438 00:18:41,910 --> 00:18:47,760 x বা y স্পট চিহ্নিত যেখানেই এবং যান এবং প্রকৃত মান পরিবর্তন 1 এবং 2 439 00:18:47,760 --> 00:18:48,270 সেখানে. 440 00:18:48,270 --> 00:18:50,710 >> তাই সোয়াপ খুব সামান্য পরিবর্তন প্রয়োজন. 441 00:18:50,710 --> 00:18:53,760 এবং প্রথম নজরে, এই শক্তি গৃহস্থালির কাজ তারা একটি সামান্য অনুরূপ বলে মনে হচ্ছে. 442 00:18:53,760 --> 00:18:54,850 এবং প্রকৃতপক্ষে এটা. 443 00:18:54,850 --> 00:18:59,635 সুতরাং একটি তথ্য কি ধরনের একটি পয়েন্টার, এই হাইলাইট অংশ উপর ভিত্তি করে? 444 00:18:59,635 --> 00:19:00,810 445 00:19:00,810 --> 00:19:01,620 সুতরাং এটা কোন int. 446 00:19:01,620 --> 00:19:04,880 >> সুতরাং একটি আর একটি int, এটা কোন int এর ঠিকানা. 447 00:19:04,880 --> 00:19:07,910 এবং একইভাবে, খ এখন যাচ্ছে কোন int এর ঠিকানা দিতে হবে. 448 00:19:07,910 --> 00:19:12,470 তাই আমি এখন প্রধান থেকে অদল বদল যখন কল, আমি সোয়াপ 1 এবং 2 দিতে যাচ্ছি না. 449 00:19:12,470 --> 00:19:15,540 আমি মত দিতে যাচ্ছি বলদ কিছু এবং ষাঁড় কিছু, 450 00:19:15,540 --> 00:19:19,820 হতে হবে যে দুই অ্যাড্রেস তাদের প্রকৃত অবস্থানে অদল বদল 451 00:19:19,820 --> 00:19:21,310 আমার কম্পিউটার এর মেমরি. 452 00:19:21,310 --> 00:19:25,580 >> সুতরাং এখন, আমার অবশিষ্ট বাস্তবায়ন একটি বাচ্চা পরিবর্তন প্রয়োজন. 453 00:19:25,580 --> 00:19:28,650 এখন কি স্পষ্টত আলাদা এই কোড তিনটি লাইনে? 454 00:19:28,650 --> 00:19:31,350 এই সব জঘন্য বড় আছে জায়গা উপর, ঠিক? 455 00:19:31,350 --> 00:19:33,014 সুতরাং এখানে কি করছেন? 456 00:19:33,014 --> 00:19:33,514 হ্যাঁ? 457 00:19:33,514 --> 00:19:35,055 >> শ্রোতা: এটা [শ্রবণাতীত] সম্ভবত না. 458 00:19:35,055 --> 00:19:36,832 459 00:19:36,832 --> 00:19:37,990 >> ডেভিড জে MALAN: যথাযথভাবে. 460 00:19:37,990 --> 00:19:41,560 এই প্রসঙ্গ তাই এই ছিল না সেরা নকশা সিদ্ধান্ত, নিঃসন্দেহে, 461 00:19:41,560 --> 00:19:42,530 বছর আগে. 462 00:19:42,530 --> 00:19:45,110 এই প্রেক্ষাপটে, যেখানে আপনি শুধু একটি তারকা আছে, 463 00:19:45,110 --> 00:19:48,240 এবং আপনি একটি ডাটা টাইপ আছে না, int মত, অবিলম্বে বাম, 464 00:19:48,240 --> 00:19:53,146 এর পরিবর্তে আপনি পরিষ্কারভাবে, একটি সমান চিহ্ন আছে, এই প্রেক্ষাপটে, যখন আপনি বলে একটি তারকা, 465 00:19:53,146 --> 00:19:56,980 যে যেতে মানে একটি মধ্যে যে ঠিকানা. 466 00:19:56,980 --> 00:19:58,870 তাই কথা বলতে, ধন মানচিত্র অনুসরণ করুন. 467 00:19:58,870 --> 00:20:01,720 >> এবং ইতিমধ্যে, লাইন 37, এটা একই জিনিস মানে. 468 00:20:01,720 --> 00:20:05,460 ঠিকানা যান, এবং কি সেখানে রাখা? 469 00:20:05,460 --> 00:20:09,520 যাই হোক না কেন এ খ নির্দিষ্ট যে অবস্থান. 470 00:20:09,520 --> 00:20:10,980 অন্য কথায়, b যান. 471 00:20:10,980 --> 00:20:12,130 যে মূল্য পান. 472 00:20:12,130 --> 00:20:15,620 সমান প্রতি, একটি যান এবং সাইন ইন নিয়োগ অপারেটর, 473 00:20:15,620 --> 00:20:17,010 সেখানে যে মান করা. 474 00:20:17,010 --> 00:20:19,272 >> একইভাবে, কোন int, temp ঠিক কোন int হয়. 475 00:20:19,272 --> 00:20:20,730 কিছুই temp সম্পর্কে পরিবর্তন প্রয়োজন. 476 00:20:20,730 --> 00:20:24,810 এটা Annenberg এ থেকে মাত্র একটি অতিরিক্ত গ্লাস এর কিছু দুধ বা কমলার রস জন্য. 477 00:20:24,810 --> 00:20:27,630 কিন্তু আমি বলতে খ যেতে হবে না. 478 00:20:27,630 --> 00:20:31,449 যে গন্তব্যে যান এবং সেখানে temp মধ্যে মান করা. 479 00:20:31,449 --> 00:20:32,490 আমি তখন কি ঘটছে? 480 00:20:32,490 --> 00:20:36,540 আমি আসলে, এই সময় অদলবদল কল এই প্রথম ট্রে, এখানে মুখ্য প্রতিনিধিত্ব করে 481 00:20:36,540 --> 00:20:42,270 এই দ্বিতীয় ট্রে অদল বদল প্রতিনিধিত্ব করে, যখন আমি এবং চিহ্ন; x এবং চিহ্ন; Y পাস 482 00:20:42,270 --> 00:20:47,150 প্রধান অদলবদল থেকে, শুধু, পরিষ্কার করা এই স্ট্যাকের ফ্রেম প্রাপ্তির কি? 483 00:20:47,150 --> 00:20:48,700 484 00:20:48,700 --> 00:20:49,200 হ্যাঁ? 485 00:20:49,200 --> 00:20:50,180 >> শ্রোতা: [শ্রবণাতীত]. 486 00:20:50,180 --> 00:20:51,180 ডেভিড জে MALAN: যথাযথভাবে. 487 00:20:51,180 --> 00:20:53,129 x এর ঠিকানা এবং y এর ঠিকানা. 488 00:20:53,129 --> 00:20:55,170 এবং আপনি এই মনে করতে পারেন পোস্টাল ঠিকানা মত. 489 00:20:55,170 --> 00:20:58,772 33 অক্সফোর্ড স্ট্রীট এবং 35 অক্সফোর্ড স্ট্রিট, এবং আপনি 490 00:20:58,772 --> 00:21:01,230 দুটি ভবন স্থানান্তর করতে চান যারা অবস্থানে আছে. 491 00:21:01,230 --> 00:21:04,680 >> এটি একটি হাস্যকর ধারণা সাজানোর, কিন্তু যে আমরা ঠিকানা দ্বারা মানে সব. 492 00:21:04,680 --> 00:21:07,000 বিশ্বের যেখানে যা করতে পারেন আপনি ঐ দুটি ints হয় খুঁজে পেতে? 493 00:21:07,000 --> 00:21:09,470 বিশ্বের যেখানে আপনি করতে পারেন যারা দুই ভবন খুঁজে পেতে? 494 00:21:09,470 --> 00:21:15,170 সুতরাং পরিশেষে, যদি এই সব সময় আমি পরে আজ এর সোর্স কোড মধ্যে যান এবং কম্পাইল 495 00:21:15,170 --> 00:21:22,110 বিনিময় এবং রান ./swap, পরিশেষে, জন্য প্রথম সময় আমরা আসলে দেখতে না 496 00:21:22,110 --> 00:21:25,330 আমার মান প্রকৃতপক্ষে আছে সফলভাবে আনা হয়েছে. 497 00:21:25,330 --> 00:21:30,860 এবং এখন, এমনকি আমরা গ্রহণ করতে পারেন এই, বলে, GDB নোট. 498 00:21:30,860 --> 00:21:32,740 >> তাই আমাকে একই ফাইলের মধ্যে যান. 499 00:21:32,740 --> 00:21:35,010 আমাকে এগিয়ে যান এবং ./swap এর GDB চালানো. 500 00:21:35,010 --> 00:21:36,590 501 00:21:36,590 --> 00:21:40,547 এবং এখন, অদলবদল, আমি যেতে চলেছি এগিয়ে এবং প্রধান একটি বিভাজক পয়েন্ট সেট. 502 00:21:40,547 --> 00:21:42,630 এবং এখন আমি যেতে চলেছি এগিয়ে এবং প্রোগ্রাম চালানো. 503 00:21:42,630 --> 00:21:45,810 এবং এখন আমরা আমার কোড দেখতে যে লাইনে বিরতি দেওয়া. 504 00:21:45,810 --> 00:21:48,330 >> আমি এগিয়ে এবং মুদ্রণ যান এক্স, আমি এখানে কি হবে? 505 00:21:48,330 --> 00:21:49,314 506 00:21:49,314 --> 00:21:49,980 এটি একটি প্রশ্ন. 507 00:21:49,980 --> 00:21:51,030 508 00:21:51,030 --> 00:21:51,530 আবার বলুন? 509 00:21:51,530 --> 00:21:52,295 >> শ্রোতা: [শ্রবণাতীত]. 510 00:21:52,295 --> 00:21:53,910 >> ডেভিড জে MALAN: র্যান্ডম সংখ্যা, হয়তো. 511 00:21:53,910 --> 00:21:56,010 হয়তো আমি ভাগ্যবান পেতে, এবং এটা 0 মত, চমৎকার এবং সহজ. 512 00:21:56,010 --> 00:21:57,230 কিন্তু হয়তো এটা কিছু র্যান্ডম সংখ্যা. 513 00:21:57,230 --> 00:21:58,090 এই ক্ষেত্রে, আমি ভাগ্যবান. 514 00:21:58,090 --> 00:21:59,030 এটা ঠিক 0 হতে হবে. 515 00:21:59,030 --> 00:22:00,780 কিন্তু, প্রকৃতপক্ষে ভাগ্য না পর্যন্ত, কারণ আমি 516 00:22:00,780 --> 00:22:06,280 পরবর্তী টাইপ করুন এবং তারপর মুদ্রণ এক্স যে হয়েছে কোড লাইন, লাইন 19, মৃত্যুদন্ড কার্যকর করা হয়েছে. 517 00:22:06,280 --> 00:22:10,942 >> এদিকে, আমি টাইপ করে পরবর্তী আবার, এবং এখন আমি 2 দেখতে যাচ্ছি, Y প্রিন্ট আউট. 518 00:22:10,942 --> 00:22:13,900 আমি পরের টাইপ এখন, যদি, এটা যাচ্ছে একটু বিভ্রান্তিকর পেতে, কারণ এখন, 519 00:22:13,900 --> 00:22:17,250 printf, প্রদর্শিত যাচ্ছে পর্দা তা, হিসাবে. x 1. 520 00:22:17,250 --> 00:22:18,606 >> এর আবার এই কাজ করা যাক. 521 00:22:18,606 --> 00:22:20,480 এবং এখন, এখানে যেখানে কিছু আকর্ষণীয় পেতে. 522 00:22:20,480 --> 00:22:21,580 523 00:22:21,580 --> 00:22:26,580 আমি সোয়াপ বা এমনকি পদক্ষেপ কল করার আগে তা, এর একটু উঁকি নিতে. 524 00:22:26,580 --> 00:22:28,980 এক্স, আবার, 1. 525 00:22:28,980 --> 00:22:33,240 Y, অবশ্যই, দ্রুত বৈধতা হয় তাই না হার্ড আছে,, 2 বার করো. 526 00:22:33,240 --> 00:22:35,740 কিন্তু এম্পারসেন্ড এক্স কি? 527 00:22:35,740 --> 00:22:36,760 528 00:22:36,760 --> 00:22:39,350 উত্তর, এটা কোন ধরনের ভীতু খুঁজছেন. 529 00:22:39,350 --> 00:22:43,500 কিন্তু বন্ধনীর মধ্যে কোন int তারা ঠিক হয় এই বলছে জিডিপি এর উপায় একটি ঠিকানা. 530 00:22:43,500 --> 00:22:48,290 এটা, এটি একটি একটি পয়েন্টার কোন int না কোন int, বা অন্যথায় একটি ঠিকানা হিসাবে পরিচিত. 531 00:22:48,290 --> 00:22:49,742 >> এই পাগল জিনিস কি? 532 00:22:49,742 --> 00:22:51,825 আমরা কিছু দেখা যায় না করেছি বেশ আগে যে মত. 533 00:22:51,825 --> 00:22:53,650 534 00:22:53,650 --> 00:22:58,120 তাই এই আমার কম্পিউটার এর মধ্যে ঠিকানা এক্স বসবাস ঘটবে যেখানে মেমরি. 535 00:22:58,120 --> 00:22:59,040 এটা ষাঁড়-কিছু. 536 00:22:59,040 --> 00:23:01,290 এবং এই উন্মুক্তভাবে, কেন হয়, আমি তীর অঙ্কন শুরু করেছি, 537 00:23:01,290 --> 00:23:03,340 পরিবর্তে সংখ্যা, যারা সত্যিই বজায় রাখে কারণ 538 00:23:03,340 --> 00:23:06,890 আপনার কোন int একটি নির্দিষ্ট সময়ে যে বড় যে যে ঠিকানা. 539 00:23:06,890 --> 00:23:12,160 কিন্তু bffff0c4, এই সব প্রকৃতপক্ষে হেক্সাডেসিমেল সংখ্যা, 540 00:23:12,160 --> 00:23:13,720 চ মাধ্যমে 0 যা. 541 00:23:13,720 --> 00:23:16,590 >> তাই আমরা খুব বাস করছি যাচ্ছে না সেগুলো কি দীর্ঘ. 542 00:23:16,590 --> 00:23:19,400 কিন্তু আমি y প্রিন্ট আউট যদি, অবশ্যই, আমি 2 দেখুন. 543 00:23:19,400 --> 00:23:22,440 কিন্তু এম্পারসেন্ড y, আমি এই ঠিকানা দেখতে পাবেন. 544 00:23:22,440 --> 00:23:26,527 এবং খেয়াল করুন, অদ্ভুত জন্য, সরাইয়া x এবং y কতদূর কি? 545 00:23:26,527 --> 00:23:27,985 আপনি ঠিকানা অধিকাংশ উপেক্ষা করতে পারেন. 546 00:23:27,985 --> 00:23:29,330 547 00:23:29,330 --> 00:23:29,920 চার বাইট. 548 00:23:29,920 --> 00:23:33,510 এবং সেই সঙ্গে সঙ্গতিপূর্ণ আমাদের তার আগে কোন int কিভাবে বড় হয় দাবি করে যে? 549 00:23:33,510 --> 00:23:34,130 চার বাইট. 550 00:23:34,130 --> 00:23:37,420 তাই সবকিছু এর আবরণের আপ মত দেখায় সুন্দরভাবে, আপনি মেমরি, আশা করি হতে পারে. 551 00:23:37,420 --> 00:23:40,010 >> সুতরাং এখন, শুধু দ্রুত এগিয়ে আসুন এই গল্প শেষ. 552 00:23:40,010 --> 00:23:43,290 , এর এগিয়ে যান এবং ধাপে টাইপ করুন সোয়াপ ফাংশন মধ্যে আকর্ষণীয় যাও. 553 00:23:43,290 --> 00:23:46,880 এখন আমি একটি টাইপ করুন, এটি, লক্ষ্য x এর ঠিকানা অভিন্ন. 554 00:23:46,880 --> 00:23:52,130 আমি খ টাইপ করুন, এটি অভিন্ন y এর ঠিকানা. 555 00:23:52,130 --> 00:23:57,020 তাই আমি যদি কি হবে , একটি ঠিকানায় যান বলে? 556 00:23:57,020 --> 00:23:58,120 সুতরাং একটি তারকা মুদ্রণ. 557 00:23:58,120 --> 00:24:00,130 তাই তারা এই প্রেক্ষাপটে, মানে সেখানে যান. 558 00:24:00,130 --> 00:24:02,730 Ampersand এর ঠিকানা কি মানে. 559 00:24:02,730 --> 00:24:05,000 তাই একটি উপায় 1 তারা. 560 00:24:05,000 --> 00:24:09,590 এবং মুদ্রণ তারকা ক্যাচ সম্পর্কে 2 দেয়. 561 00:24:09,590 --> 00:24:15,750 >> এবং আমাকে মুহূর্ত জন্য, অনুমান করা যাক, অন্তত কোড যে 562 00:24:15,750 --> 00:24:18,950 হতে পারে এখন চালানো আয় যে ভাবে মাধ্যমে আলোচনা করে. 563 00:24:18,950 --> 00:24:21,150 কিন্তু আমরা দীর্ঘ আগে এই ধারণা পরিদর্শন করব. 564 00:24:21,150 --> 00:24:23,850 সোয়াপ তাই এই সংস্করণ এখন সঠিক এবং পারবেন 565 00:24:23,850 --> 00:24:26,650 আমাদের এই বিশেষ তথ্য টাইপ অদলবদল. 566 00:24:26,650 --> 00:24:29,120 >> তাই কোন প্রশ্ন তারপর অদল বদল উপর? 567 00:24:29,120 --> 00:24:29,890 তারা উপর? 568 00:24:29,890 --> 00:24:30,690 ঠিকানা অন? 569 00:24:30,690 --> 00:24:33,270 এবং আপনি সঙ্গে দেখতে পাবেন, সমস্যা, বাছাই, 4 সেট 570 00:24:33,270 --> 00:24:37,310 কিন্তু সমস্যা 5, স্পষ্টভাবে, কিভাবে এই সেট কিছু দরকারী এবং পেতে আরো অনেক কিছু 571 00:24:37,310 --> 00:24:39,584 ফলে, তাদের সঙ্গে আরামদায়ক. 572 00:24:39,584 --> 00:24:40,430 এ সব কিছু? 573 00:24:40,430 --> 00:24:40,930 ঠিক আছে. 574 00:24:40,930 --> 00:24:44,350 সুতরাং malloc, এই ফাংশন আবার, হয় যে শুধু মেমরি, মেমরি বরাদ্দ 575 00:24:44,350 --> 00:24:45,330 বরাদ্দ. 576 00:24:45,330 --> 00:24:47,024 এবং কেন এই দরকারী? 577 00:24:47,024 --> 00:24:48,940 ওয়েল, এই সব সময়, আপনি malloc ব্যবহার করে. 578 00:24:48,940 --> 00:24:52,230 আপনি এখন কিভাবে বিবেচনা কাজ GetString, সম্ভবতঃ, এটা 579 00:24:52,230 --> 00:24:56,140 একটি খণ্ড কেউ জিজ্ঞাসা করা হয়েছে মেমরি, যে কোনো সময় যে ব্যবহারকারী ধরনের একটি স্ট্রিং 580 00:24:56,140 --> 00:24:59,040 মধ্যে, অবশ্যই আমরা কারণ জানেন না, CS50 কর্মীদের হিসাবে, 581 00:24:59,040 --> 00:25:02,710 কিভাবে বড় যারা স্ট্রিং যে মানুষের হতে পারে টাইপ করতে যাচ্ছি. 582 00:25:02,710 --> 00:25:07,910 >> সুতরাং এর, প্রথম সময় জন্য, শুরু করা যাক ছুলা ফিরে কিভাবে CS50 লাইব্রেরি কাজ করে, 583 00:25:07,910 --> 00:25:10,990 উদাহরণ কয়েক দ্বারা যে সেখানে আমাদের হতে হবে. 584 00:25:10,990 --> 00:25:15,300 আমি gedit খুলুন, যদি তাই হয় এবং,, scanf 0 খুলুন 585 00:25:15,300 --> 00:25:17,055 আমরা নিম্নলিখিত কোড দেখতে যাচ্ছেন. 586 00:25:17,055 --> 00:25:18,720 587 00:25:18,720 --> 00:25:23,530 জন্য ওয়েবসাইটে পাওয়া scanf 0, আজ, কোড তুলনামূলকভাবে কয়েক লাইন আছে 588 00:25:23,530 --> 00:25:25,351 এখানে, 20 মাধ্যমে 14. 589 00:25:25,351 --> 00:25:26,600 এবং এটা কি করছে দেখুন. 590 00:25:26,600 --> 00:25:28,920 এটা কোন int, এক্স নামক ঘোষণা করে. 591 00:25:28,920 --> 00:25:30,850 এটা কিছু মত, সংখ্যা, দয়া করে বলেছেন. 592 00:25:30,850 --> 00:25:33,940 এবং এখন এটা, scanf% আমি, ও এক্স বলেছেন. 593 00:25:33,940 --> 00:25:35,620 তাই সেখানে নতুন কাপড় একটি গুচ্ছ আছে. 594 00:25:35,620 --> 00:25:38,420 >> কিন্তু, scanf, আপনি ধরনের মনে করতে পারেন এর printf বিপরীত হিসাবে. 595 00:25:38,420 --> 00:25:40,090 printf,, অবশ্যই, পর্দায় প্রিন্ট. 596 00:25:40,090 --> 00:25:44,410 ব্যবহারকারীর থেকে স্ক্যান, scanf সাজানোর কীবোর্ড কিছু সে টাইপ করা হয়েছে. 597 00:25:44,410 --> 00:25:46,550 >> % আমি printf, ভালো হয়. 598 00:25:46,550 --> 00:25:49,410 এই আশা মানে ব্যবহারকারী কোন int টাইপ করুন. 599 00:25:49,410 --> 00:25:52,820 এবং এখন, আপনি কেন আমি মনে করি না scanf ও এক্স ক্ষণস্থায়ী হতে পারে? 600 00:25:52,820 --> 00:25:54,030 601 00:25:54,030 --> 00:25:57,770 যদি scanf জীবনের উদ্দেশ্য ব্যবহারকারীর কাছ থেকে কিছু পেতে হয়, 602 00:25:57,770 --> 00:26:02,480 এর অর্থ কি এখন, এটা ক্ষণস্থায়ী, ও এক্স? 603 00:26:02,480 --> 00:26:02,980 হ্যাঁ? 604 00:26:02,980 --> 00:26:03,896 >> শ্রোতা: [শ্রবণাতীত]. 605 00:26:03,896 --> 00:26:05,540 606 00:26:05,540 --> 00:26:06,540 ডেভিড জে MALAN: যথাযথভাবে. 607 00:26:06,540 --> 00:26:12,900 যাই হোক না কেন আমি, মানবিক,, আমার ইনপুট টাইপ যে অবস্থানে সংরক্ষণ করা যাচ্ছে. 608 00:26:12,900 --> 00:26:17,660 এটা ঠিক, প্রত্যাহার, যথেষ্ট নয় ইতিমধ্যে আমরা দেখা করেছি, কারণ x এর মধ্যে পাস, 609 00:26:17,660 --> 00:26:21,630 যে কোনো সময় আপনি মাত্র একটি কাঁচা পরিবর্তনশীল পাস কোন int মত, কিছু অন্যান্য ফাংশন, 610 00:26:21,630 --> 00:26:25,640 নিশ্চিত, এটা যে পরিবর্তন করতে পারেন পরিবর্তনশীল, কিন্তু স্থায়ীভাবে. 611 00:26:25,640 --> 00:26:27,360 এটা মুখ্য প্রভাব থাকতে পারে না. 612 00:26:27,360 --> 00:26:29,420 এটা শুধুমাত্র তার নিজের স্থানীয় অনুলিপি পরিবর্তন করতে পারেন. 613 00:26:29,420 --> 00:26:32,560 কিন্তু যদি, এর পরিবর্তে, আপনি করবেন না আমার প্রকৃত int দিন, 614 00:26:32,560 --> 00:26:36,640 কিন্তু আপনি আমাকে নির্দেশ দিতে যে কোন int, এখন আমি,,, scanf হচ্ছে 615 00:26:36,640 --> 00:26:41,050 নিশ্চয়, আমি যে অনুসরণ করতে পারেন ঠিকানা এবং সেখানে একটি সংখ্যা করা 616 00:26:41,050 --> 00:26:43,280 তাই আপনি ভাল হিসাবে এটি এক্সেস আছে. 617 00:26:43,280 --> 00:26:45,120 >> আমি এই প্রোগ্রাম চালানো সুতরাং যখন, এর দেখতে দিন. 618 00:26:45,120 --> 00:26:49,660 Scanf 0 বিন্দু স্ল্যাশ করুন, 0 scanf. 619 00:26:49,660 --> 00:26:54,030 এবং আমি এখন একটি সংখ্যা টাইপ 50 ভালো, 50 জন্য ধন্যবাদ. 620 00:26:54,030 --> 00:26:58,150 আমি এখন মত একটি নম্বর টাইপ করুন নেতিবাচক 1, 1 নেতিবাচক. 621 00:26:58,150 --> 00:27:04,200 আমি এখন এইচএম, 1.5 মত একটি নম্বর টাইপ করুন. 622 00:27:04,200 --> 00:27:06,030 কেন আমার প্রোগ্রাম আমাকে উপেক্ষা না? 623 00:27:06,030 --> 00:27:07,300 624 00:27:07,300 --> 00:27:09,880 ওয়েল, কারণ কেবল, আমি বলা এটা কোন int শুধুমাত্র আশা. 625 00:27:09,880 --> 00:27:10,380 ঠিক আছে. 626 00:27:10,380 --> 00:27:11,630 সুতরাং যে এই এক সংস্করণ. 627 00:27:11,630 --> 00:27:16,600 এর একটি খাঁজ আপ জিনিষ নিতে এবং এই ভাল হয় না যে প্রস্তাব করছি. 628 00:27:16,600 --> 00:27:20,530 এবং এখানে একটি খুব সহজ উদাহরণ মিথ্যা আমরা কোড লেখা শুরু করতে পারেন কিভাবে 629 00:27:20,530 --> 00:27:24,450 অন্য মানুষ শোষণ করতে পারে যে বা খারাপ জিনিসগুলি দ্বারা আপোষ. 630 00:27:24,450 --> 00:27:28,336 তাই লাইন 16, যাতে একই আত্মা আগে, 631 00:27:28,336 --> 00:27:29,960 কিন্তু আমি এটা এই সময় int ঘোষণা করছি না. 632 00:27:29,960 --> 00:27:32,970 আমি স্ট্রিং ওরফে, এটা গৃহস্থালি তারা ঘোষণা করছি. 633 00:27:32,970 --> 00:27:35,190 >> কিন্তু যে সত্যিই কি মানে? 634 00:27:35,190 --> 00:27:38,790 তাই আমি একটি address-- উল্লেখ না এবং যদি আমি ইচ্ছামত এটি আহ্বান করছি, বাফার, 635 00:27:38,790 --> 00:27:43,370 কিন্তু আমি simple-- হবে, এটি কল করতে পারেনি এবং তারপর আমি, এই কাজের আমার ব্যাখ্যা 636 00:27:43,370 --> 00:27:48,630 আপনি আগের উপর ভিত্তি করে, পারে যদি যুক্তি, scanf লাইন 18 কি করছে, 637 00:27:48,630 --> 00:27:55,000 পাস% এবং বাফার যদি, একটি ঠিকানা যা? 638 00:27:55,000 --> 00:27:58,210 আপনি আবেদন যদি scanf, কি সংস্করণ 0 সঠিক একই যুক্তি, 639 00:27:58,210 --> 00:28:00,640 এখানে কাজ করতে চেষ্টা করে যাচ্ছে, যখন ব্যবহারকারী ধরনের কিছু? 640 00:28:00,640 --> 00:28:02,630 641 00:28:02,630 --> 00:28:03,409 হ্যাঁ? 642 00:28:03,409 --> 00:28:04,407 >> শ্রোতা: [শ্রবণাতীত]. 643 00:28:04,407 --> 00:28:07,401 644 00:28:07,401 --> 00:28:08,890 >> ডেভিড জে MALAN: যথাযথভাবে. 645 00:28:08,890 --> 00:28:11,577 Scanf, যুক্তি আগে দ্বারা, স্ট্রিং নিয়ে যাচ্ছে 646 00:28:11,577 --> 00:28:13,410 মানুষের টাইপ , এটি এখন একটি স্ট্রিং in-- 647 00:28:13,410 --> 00:28:15,790 এটা সম্ভবতঃ, একটি সংখ্যা নয় সে cooperates-- যদি 648 00:28:15,790 --> 00:28:19,310 এবং এটা যে করা চেষ্টা করে যাচ্ছে যাই হোক না কেন ঠিকানায় মেমরি স্ট্রিং 649 00:28:19,310 --> 00:28:20,340 বাফার উল্লেখ করা হয়. 650 00:28:20,340 --> 00:28:23,870 এবং এই মহান, বাফার কারণ প্রকৃতপক্ষে একটি ঠিকানা হতে বোঝানো হয়. 651 00:28:23,870 --> 00:28:30,470 >> কিন্তু আমি এই প্রোগ্রাম একটি মধ্যে বগী দাবি গুরুতর ভাবে, মান কারণ কি 652 00:28:30,470 --> 00:28:31,330 ডিফল্ট বাফার? 653 00:28:31,330 --> 00:28:33,380 654 00:28:33,380 --> 00:28:34,790 আমি কি সক্রিয়া আছে? 655 00:28:34,790 --> 00:28:35,770 মেমরি কি খণ্ড? 656 00:28:35,770 --> 00:28:37,480 657 00:28:37,480 --> 00:28:38,620 আমি না, ডান? 658 00:28:38,620 --> 00:28:42,265 >> তাই আমি বরাদ্দ করেছি, যদিও একটি আর এর বলা হচ্ছে যে গৃহস্থালি তারা, 659 00:28:42,265 --> 00:28:48,030 এটি পরিবর্তে বলা হয়, তাই buffer-- এর পরিবর্তনশীল এর নাম আঁকা 660 00:28:48,030 --> 00:28:53,380 আমি না থাকে তাহলে এখন buffer-- এখানে GetString বা malloc বলা হয়, 661 00:28:53,380 --> 00:28:56,030 যে কার্যকরভাবে যে মানে বাফার কিছু আবর্জনা মান. 662 00:28:56,030 --> 00:28:57,030 >> এখন যে কি মানে? 663 00:28:57,030 --> 00:29:00,220 এটা আমি, scanf বলা আছে যে মানে ব্যবহারকারী থেকে একটি পংক্তি আশা. 664 00:29:00,220 --> 00:29:01,300 এবং আপনি জানেন কি? 665 00:29:01,300 --> 00:29:03,883 যাই হোক না কেন এই জিনিস নির্দেশ করা হয় চাচ্ছি এবং আমি প্রশ্ন চিহ্ন আঁকা, 666 00:29:03,883 --> 00:29:07,060 কিন্তু বাস্তবতা, এটি হতে যাচ্ছে OX1, 2, 3, ভালো কিছু অধিকার? 667 00:29:07,060 --> 00:29:10,730 এটা কিছু বাজে মান যে শুধু আগে থেকে সেখানে হতে হবে. 668 00:29:10,730 --> 00:29:13,440 তাই অন্য উপায় করা, এটা বাফার ঠিক হিসাবে যদিও 669 00:29:13,440 --> 00:29:16,180 মেমরি কিছু প্রতি নির্দেশ. 670 00:29:16,180 --> 00:29:17,610 আমি কি কোন ধারণা আছে. 671 00:29:17,610 --> 00:29:24,130 >> আমি এখন গেব টাইপ সুতরাং, যদি এটি হচ্ছে সেখানে গ্রাম একটি বি ই / 0 করা চেষ্টা করুন. 672 00:29:24,130 --> 00:29:25,530 কিন্তু কে যে কি জানে? 673 00:29:25,530 --> 00:29:27,480 এবং অতীতে, কোন আমরা স্পর্শ করতে চেষ্টা করেছি সময় 674 00:29:27,480 --> 00:29:29,770 অন্তর্গত নয় যে মেমরি আমাদের, কি হয়েছে? 675 00:29:29,770 --> 00:29:31,020 676 00:29:31,020 --> 00:29:32,870 বা প্রায় প্রতি সময়. 677 00:29:32,870 --> 00:29:34,310 সেগমেন্টেশন ফল্ট, ডান? 678 00:29:34,310 --> 00:29:37,829 >> এটি যেখানে এই তীর, আমি কোন ধারণা আছে প্রতি নির্দেশ. এটি কিছু কিছু র্যান্ডম মান. 679 00:29:37,829 --> 00:29:40,370 এবং অবশ্যই, আপনি ব্যাখ্যা যদি একটি ঠিকানা হিসাবে একটি র্যান্ডম মান, 680 00:29:40,370 --> 00:29:42,610 আপনি যেতে চলুন কিছু র্যান্ডম গন্তব্য. 681 00:29:42,610 --> 00:29:46,810 তাই গেব ক্র্যাশ প্রকৃতপক্ষে পারে এখানে এই ক্ষেত্রে আমার প্রোগ্রাম. 682 00:29:46,810 --> 00:29:50,600 >> তাই আমরা যে প্রায় হিসাবে খারাপ কি করতে পারেন? 683 00:29:50,600 --> 00:29:52,660 এই তৃতীয় এবং বিবেচনা scanf চূড়ান্ত উদাহরণ. 684 00:29:52,660 --> 00:29:53,890 685 00:29:53,890 --> 00:29:56,870 এই সংস্করণ কি অর্থে ভাল? 686 00:29:56,870 --> 00:29:57,990 687 00:29:57,990 --> 00:30:01,400 আপনার সাথে যদি আরামদায়ক পূর্ববর্তী সমস্যা, এই ভাল. 688 00:30:01,400 --> 00:30:02,250 কেন? 689 00:30:02,250 --> 00:30:03,250 >> শ্রোতা: [শ্রবণাতীত]. 690 00:30:03,250 --> 00:30:06,235 691 00:30:06,235 --> 00:30:07,110 ডেভিড জে MALAN: গুড. 692 00:30:07,110 --> 00:30:09,970 লাইন 16 তাই এই ক্ষেত্রে অর্থে, ভাল 693 00:30:09,970 --> 00:30:12,030 আমরা স্পষ্টভাবে যে কিছু মেমরি বণ্টন. 694 00:30:12,030 --> 00:30:14,190 আমরা malloc ব্যবহার করে না আমরা সপ্তাহে 2 ব্যবহার করছেন 695 00:30:14,190 --> 00:30:16,060 শুধু একটি অ্যারের ঘোষণা পদ্ধতির. 696 00:30:16,060 --> 00:30:18,130 এবং আমরা যে একটি পংক্তি আগে বলেন করেছি শুধু অক্ষরের একটি অ্যারের হয়, 697 00:30:18,130 --> 00:30:19,690 তাই এই সম্পূর্ণ বৈধ. 698 00:30:19,690 --> 00:30:22,910 কিন্তু এটা হিসাবে, অবশ্যই, এর আপনি 16,, নির্দিষ্ট আকার রাখবেন. 699 00:30:22,910 --> 00:30:25,440 >> তাই এই প্রোগ্রাম সম্পূর্ণ নিরাপদ, আমি টাইপ 700 00:30:25,440 --> 00:30:29,760 একটি অক্ষর স্ট্রিং, দুই অক্ষর স্ট্রিং, 15 অক্ষর স্ট্রিং. 701 00:30:29,760 --> 00:30:34,970 কিন্তু যত তাড়াতাড়ি আমি 16 টাইপ করা শুরু করে, 17, 18, 1000 অক্ষর স্ট্রিং, 702 00:30:34,970 --> 00:30:37,390 যেখানে স্ট্রিং আপ শেষ হয়ে যাচ্ছে? 703 00:30:37,390 --> 00:30:39,570 এটা আংশিকভাবে এখানে শেষ করা যাচ্ছে. 704 00:30:39,570 --> 00:30:42,820 কিন্তু তারপর কে কি অন্য জানে গণ্ডি অতিক্রম হয় 705 00:30:42,820 --> 00:30:44,270 এই বিশেষ অ্যারের? 706 00:30:44,270 --> 00:30:48,015 >> আমি করেছি হিসাবে যদিও এটা এখানে 16 বাক্সে ঘোষণা করেন. 707 00:30:48,015 --> 00:30:49,300 708 00:30:49,300 --> 00:30:52,690 সুতরাং সমস্ত 16 আঁকা আউট, বরং আমরা করব আমি 16 টানা করেছি জাহির. 709 00:30:52,690 --> 00:30:56,540 কিন্তু আমি তখন একটি স্ট্রিং পড়তে চেষ্টা করে যে 50 টি অক্ষর, যেমন অনেক আর, 710 00:30:56,540 --> 00:31:01,270 আমি নির্বাণ শুরু করা যাচ্ছে না এ, বি, সি, ডি, X, Y, Z. 711 00:31:01,270 --> 00:31:04,916 এবং এই সম্ভবতঃ হয় অন্য কিছু করার মেমরির অংশে অন্তর্ভুক্ত 712 00:31:04,916 --> 00:31:06,790 যে, আবার, কারণ হতে পারে আমার প্রোগ্রাম, বিপর্যস্ত 713 00:31:06,790 --> 00:31:10,600 আমি জিজ্ঞাসা করেছি, কারণ মাত্র 16 বাইট চেয়ে বেশি কিছু. 714 00:31:10,600 --> 00:31:12,260 >> সুতরাং যারা বজায় রাখে? 715 00:31:12,260 --> 00:31:13,880 ভাল, এখানে CS50 লাইব্রেরি. 716 00:31:13,880 --> 00:31:17,220 এবং এই সবচেয়ে শুধু উপরে নির্দেশাবলী মত. 717 00:31:17,220 --> 00:31:21,670 CS50 লাইব্রেরি, এই সব সময়, লাইন 52 এই লাইন ছিল. 718 00:31:21,670 --> 00:31:23,680 আমরা typedef দেখা যায়, বা করেছি আপনি typedef দেখতে হবে 719 00:31:23,680 --> 00:31:27,930 শুধু একটি তৈরি করে যা, pset 4, মধ্যে প্রতিশব্দ গৃহস্থালির কাজ তারা আরো হতে পারে যদ্দ্বারা 720 00:31:27,930 --> 00:31:29,290 কেবল স্ট্রিং হিসেবে অভিহিত করা হয়. 721 00:31:29,290 --> 00:31:31,540 তাই এই এক কয়েক প্রশিক্ষণ চাকার 722 00:31:31,540 --> 00:31:34,120 আমরা ফণা নীচে গোপনে ব্যবহার করেছি. 723 00:31:34,120 --> 00:31:36,490 >> এদিকে, এখানে GetChar, ফাংশন. 724 00:31:36,490 --> 00:31:38,190 এখন দৃশ্যত, এটা কোন শরীর নেই. 725 00:31:38,190 --> 00:31:40,273 এবং সত্য, আমি রাখা স্ক্রলিং, আমি আসলে না 726 00:31:40,273 --> 00:31:42,080 কোনো বাস্তবায়নের দেখতে এই ফাংশন. 727 00:31:42,080 --> 00:31:43,140 728 00:31:43,140 --> 00:31:45,516 একটি মানসিক সুস্থতা চেক, যে কেন হয়? 729 00:31:45,516 --> 00:31:46,795 >> শ্রোতা: [শ্রবণাতীত]. 730 00:31:46,795 --> 00:31:47,670 ডেভিড জে MALAN: হ্যাঁ. 731 00:31:47,670 --> 00:31:48,950 তাই এই হেডার ফাইল. 732 00:31:48,950 --> 00:31:52,520 এবং হেডার ফাইল এগুলির নমুনা থাকে, প্লাস কিছু অন্যান্য উপাদান, মনে হয়, 733 00:31:52,520 --> 00:31:53,780 typedefs মত. 734 00:31:53,780 --> 00:31:56,910 কিন্তু CS50.c, আমরা করেছি, যা সরাসরি আপনাকে দেওয়া না, 735 00:31:56,910 --> 00:32:02,100 কিন্তু CS50 প্রয়োগ করা হয়েছে সব এই সময়, গভীর তার ফোল্ডার এর ভিতরে, 736 00:32:02,100 --> 00:32:04,990 একটি সম্পূর্ণ আছে বিজ্ঞপ্তি এখানে কাজ করে গুচ্ছ. 737 00:32:04,990 --> 00:32:06,720 >> আসলে, এর স্ক্রল ডাউন. 738 00:32:06,720 --> 00:32:08,810 এখন জন্য, তাদের অধিকাংশই উপেক্ষা করা. 739 00:32:08,810 --> 00:32:12,670 কিন্তু getInt স্ক্রোল ডাউন এবং GetInt কিভাবে কাজ করে দেখুন. 740 00:32:12,670 --> 00:32:13,890 তাই এখানে getInt হয়. 741 00:32:13,890 --> 00:32:17,727 আপনি কি কখনও সত্যিই যত্ন যদি এবং কিভাবে পেতে এখানে int, কাজ করে তার ডকুমেন্টেশন হয়. 742 00:32:17,727 --> 00:32:19,560 এবং বিষয়ের মধ্যে এটা বলে আপনি বলেছেন 743 00:32:19,560 --> 00:32:21,340 মান রেঞ্জ এটি ফিরে আসতে পারেন না. 744 00:32:21,340 --> 00:32:24,400 এটি মূলত নেতিবাচক 2 বিলিয়ন ইতিবাচক 2 বিলিয়ন, বা দিতে নিতে. 745 00:32:24,400 --> 00:32:26,420 >> এবং এটা সব এই সক্রিয় আউট, সময়, আমরা করেছি, এমনকি যদিও 746 00:32:26,420 --> 00:32:28,570 আপনি এটি পরীক্ষা ছিল, যদি কিছু গোলমাল, 747 00:32:28,570 --> 00:32:30,680 এটা সব দেখা যাচ্ছে যে এই সময়,, getInt আছে 748 00:32:30,680 --> 00:32:33,600 একটি বিশেষ ফিরে হয়েছে , নাল, ধ্রুব না 749 00:32:33,600 --> 00:32:36,760 বরং, যা INT_MAX শুধু একজন প্রোগ্রামার এর কনভেনশন. 750 00:32:36,760 --> 00:32:38,846 এখানে মানে একটি বিশেষ মান. 751 00:32:38,846 --> 00:32:41,470 শুধু এই জন্য চেক করতে ভুলবেন না ক্ষেত্রে কিছু গোলমাল. 752 00:32:41,470 --> 00:32:43,261 কিন্তু আমরা কখনও বিরক্ত করেছি তারিখ থেকে যে, 753 00:32:43,261 --> 00:32:45,200 আবার, এই কারণ সহজ করে বোঝানো হয়. 754 00:32:45,200 --> 00:32:46,950 >> কিন্তু কিভাবে GetInt বাস্তবায়িত হবে? 755 00:32:46,950 --> 00:32:48,450 ওয়েল, এক, এটা কোন যুক্তি লাগে. 756 00:32:48,450 --> 00:32:49,390 আমরা জানি যে. 757 00:32:49,390 --> 00:32:50,820 এটা কোন int ফেরৎ. 758 00:32:50,820 --> 00:32:51,950 আমরা জানি যে. 759 00:32:51,950 --> 00:32:54,460 তাই কিভাবে এটি ফণা নীচে কাজ করে? 760 00:32:54,460 --> 00:32:58,290 >> তাই দৃশ্যত একটি অসীম আছে লুপ, এক অন্তত চেহারা. 761 00:32:58,290 --> 00:33:00,290 আমরা GetString ব্যবহার করছেন যে লক্ষ্য করুন. 762 00:33:00,290 --> 00:33:04,000 সুতরাং যে আকর্ষণীয়. getInt আমাদের নিজস্ব ফাংশন, কল GetString. 763 00:33:04,000 --> 00:33:05,645 এবং এখন কেন এই ক্ষেত্রে হতে পারে? 764 00:33:05,645 --> 00:33:07,400 765 00:33:07,400 --> 00:33:09,842 কেন আমি আত্মরক্ষামূলক হচ্ছে না এখানে লাইন 165 সালে? 766 00:33:09,842 --> 00:33:11,390 767 00:33:11,390 --> 00:33:15,639 কি লাইন ঘটতে পারে 164, ঠিক পরিষ্কার করা হয়? 768 00:33:15,639 --> 00:33:16,930 এটা আগে হিসাবে একই উত্তর. 769 00:33:16,930 --> 00:33:18,660 770 00:33:18,660 --> 00:33:20,089 মেমরি আউট হতে পারে. 771 00:33:20,089 --> 00:33:23,130 কিছু GetString সঙ্গে সঙ্গে গোলমাল আমরা যে সব ব্যবস্থা করতে সক্ষম হতে পেয়েছেন. 772 00:33:23,130 --> 00:33:27,070 এবং কারণ আমি নাল ফিরে না যে টেকনিক্যালি, নাল একটি পয়েন্টার. 773 00:33:27,070 --> 00:33:29,120 getInt কোন int ফিরে আছে. 774 00:33:29,120 --> 00:33:31,060 তাই আমি ইচ্ছামত করেছি মূলত, সিদ্ধান্ত নিয়েছে 775 00:33:31,060 --> 00:33:34,600 2 বিলিয়ন, যে যাচ্ছে, বা দিতে নিতে একটি বিশেষ মান হতে যে আমি না করতে পারেন 776 00:33:34,600 --> 00:33:35,970 আসলে ব্যবহারকারী থেকে পেতে. 777 00:33:35,970 --> 00:33:39,930 এটা আমি যাচ্ছি মাত্র এক মান একটি ত্রুটি কোড প্রতিনিধিত্ব অপব্যয়. 778 00:33:39,930 --> 00:33:41,540 >> সুতরাং এখন, জিনিষ একটু অভিনব পেতে. 779 00:33:41,540 --> 00:33:44,670 এবং এটি পুরোপুরি একই ফাংশন না আগে হিসাবে, কিন্তু এটা খুবই অনুরূপ. 780 00:33:44,670 --> 00:33:50,120 তাই আমি লাইন, এখানে ঘোষণা, লক্ষ্য 172, কোন int n এবং একটি গৃহস্থালি গ উভয়. 781 00:33:50,120 --> 00:33:53,600 এবং তারপর আমি, এই ভীতু লাইন ব্যবহার এটি সক্রিয় আউট, যা sscanf, 782 00:33:53,600 --> 00:33:55,990 কীবোর্ড থেকে একটি পংক্তি স্ক্যান না. 783 00:33:55,990 --> 00:33:59,226 এটি একটি বিদ্যমান স্ট্রিং দাঁড়িয়েছে ব্যবহারকারী ইতিমধ্যে টাইপ করা হয়েছে. 784 00:33:59,226 --> 00:34:02,100 তাই আমি ইতিমধ্যে getString, বলা যা আমি মেমরির মধ্যে একটি স্ট্রিং আছে. 785 00:34:02,100 --> 00:34:05,020 sscanf কি আপনি চাই একটি পার্সিং ফাংশন কল. 786 00:34:05,020 --> 00:34:07,760 এটা আমি করেছি স্ট্রিং এ দেখায় অক্ষর দ্বারা অক্ষর টাইপ করা 787 00:34:07,760 --> 00:34:09,250 এবং দরকারী কিছু আছে. 788 00:34:09,250 --> 00:34:10,969 স্ট্রিং লাইন মধ্যে সংরক্ষিত হয়. 789 00:34:10,969 --> 00:34:13,560 এবং আমি শুধুমাত্র দ্বারা যাচ্ছে জানি যে ঠিক আছে, ওহ, এখানে এবং বলছে ব্যাক আপ, 790 00:34:13,560 --> 00:34:15,143 আমি না এই সময়, কিন্তু লাইন বলা হয়. 791 00:34:15,143 --> 00:34:15,989 792 00:34:15,989 --> 00:34:18,080 >> এবং এখন এই একটি সামান্য ভিন্ন. 793 00:34:18,080 --> 00:34:22,480 কিন্তু এই কার্যকরভাবে কারণে, মানে আমরা কিছুটা, আজ আমাদের হাতে তরঙ্গ করব 794 00:34:22,480 --> 00:34:26,070 আমরা চেক করা হয় ব্যবহারকারী টাইপ করে দেখুন 795 00:34:26,070 --> 00:34:29,909 এবং int এবং হয়ত অন্য অক্ষর. 796 00:34:29,909 --> 00:34:33,610 ব্যবহারকারী কোন int টাইপ করা, এটা আমি নই, কারণ, এন সঞ্চিত করা 797 00:34:33,610 --> 00:34:36,739 ঠিকানা দ্বারা এই ক্ষণস্থায়ী, আমরা আজ দেখা করেছি নতুন কৌতুক. 798 00:34:36,739 --> 00:34:41,570 ব্যবহারকারী টাইপ করা মত 123x মধ্যে, যে x 799 00:34:41,570 --> 00:34:45,060 একটি আপ শেষ হয়ে যাচ্ছে চরিত্র গ চিঠি. 800 00:34:45,060 --> 00:34:48,739 >> এখন এটা যে sscanf সক্রিয় আউট বুদ্ধির, আমাকে বলতে হবে, 801 00:34:48,739 --> 00:34:54,750 কিভাবে অনেক ভেরিয়েবল sscanf ছিল ভরাট সফলভাবে সক্ষম. 802 00:34:54,750 --> 00:34:58,770 এই যুক্তি দ্বারা, তাই যদি ফাংশন আমি,, getInt হয় বাস্তবায়ন করছি 803 00:34:58,770 --> 00:35:00,900 কিন্তু আমি চেক করছি, সম্ভাব্য ব্যবহারকারীর জন্য 804 00:35:00,900 --> 00:35:04,190 কোন int টাইপ করা আছে অন্য কিছু দ্বারা অনুসরণ, 805 00:35:04,190 --> 00:35:08,580 কি আমি sscanf এর চান ফিরতি মূল্য সত্যিই হবে? 806 00:35:08,580 --> 00:35:10,950 উদ্দেশ্য পেতে হয় শুধু ব্যবহারকারীর কাছ থেকে কোন int? 807 00:35:10,950 --> 00:35:13,980 808 00:35:13,980 --> 00:35:19,300 >> সুতরাং sscanf আয় যদি 2, যে কি মানে? 809 00:35:19,300 --> 00:35:21,660 ব্যবহারকারী টাইপ কিছু ভালো, আক্ষরিক, 810 00:35:21,660 --> 00:35:24,770 শুধু আজেবাজে কথা, যা 123x,. 811 00:35:24,770 --> 00:35:27,490 এটা একটি ত্রুটি শর্ত, এবং আমি যে জন্য চেক করতে চান. 812 00:35:27,490 --> 00:35:32,960 >> তাই এই ধরনের যদি, দ্বারা এই যুক্তি, ফিরে sscanf কি, 813 00:35:32,960 --> 00:35:33,740 আপনি বলতে হবে? 814 00:35:33,740 --> 00:35:35,070 815 00:35:35,070 --> 00:35:39,130 সুতরাং এটা, কারণ, 2 ফিরে যাচ্ছে 123, এখানে যেতে হবে 816 00:35:39,130 --> 00:35:41,580 এবং এক্স এখানে আপ শেষ হয়ে যাচ্ছে. 817 00:35:41,580 --> 00:35:43,970 কিন্তু আমি x ভরা পেতে চান না. 818 00:35:43,970 --> 00:35:48,580 আমি শুধুমাত্র সফল sscanf করতে চান তার ভেরিয়েবল প্রথম ভর্তি. 819 00:35:48,580 --> 00:35:52,490 তাই যে কেন আমি sscanf 1 ফিরে আসতে চান. 820 00:35:52,490 --> 00:35:55,750 >> এবং এই মাথার উপর একটি বিট যদি মুহূর্ত জন্য, যে সম্পূর্ণই সূক্ষ্ম. 821 00:35:55,750 --> 00:36:00,030 যদিও যে এক বুঝি getInt এবং GetString মান 822 00:36:00,030 --> 00:36:03,630 আমরা একটি একটি নরক করছেন যে এই যেমন চেক ত্রুটি অনেক 823 00:36:03,630 --> 00:36:07,130 যে তারিখ থেকে, আপনি অনেক সুন্দর করতে পারেন আপনার কীবোর্ড এ টাইপ কিছু, 824 00:36:07,130 --> 00:36:08,490 এবং আমরা তা ধরা হবে. 825 00:36:08,490 --> 00:36:10,592 এবং আমরা অবশ্যই, কর্মী, না নিশ্চিতভাবে হবে 826 00:36:10,592 --> 00:36:13,300 একটি বাগ উৎস হতে আপনার প্রোগ্রাম, আমরা কৌসুলি কারণ 827 00:36:13,300 --> 00:36:16,270 মূঢ় সব জন্য চেক একটি ব্যবহারকারী কি হতে পারে যে, 828 00:36:16,270 --> 00:36:18,900 , যখন একটি স্ট্রিং টাইপ মত আপনি কি সত্যিই কোন int চেয়েছিলেন. 829 00:36:18,900 --> 00:36:21,350 তাই আমরা আসবো now-- জন্য এই ফিরে long-- আগে 830 00:36:21,350 --> 00:36:23,710 কিন্তু এই সব সময়, GetString এবং GetInt আছে 831 00:36:23,710 --> 00:36:29,950 এই ব্যবহার করে ফণা নীচে হয়েছে মেমরি অ্যাড্রেস মৌলিক ধারণা. 832 00:36:29,950 --> 00:36:32,580 >> সুতরাং এখন, একটি এর কিছু করা যাক ব্যবহারকারী বান্ধব একটু বেশি. 833 00:36:32,580 --> 00:36:38,740 আপনি Binky অনলাইন শেষ থেকে, প্রত্যাহার হতে পারে সময়ের আমার মাউস তাই cooperate-- হবে 834 00:36:38,740 --> 00:36:42,560 আমরা এই কোড, যা ছিল সত্যি, মোটামুটি অর্থহীন. 835 00:36:42,560 --> 00:36:45,330 এই কোড কিছুই অর্জন দরকারী, কিন্তু এটা উদাহরণ 836 00:36:45,330 --> 00:36:48,330 যে অধ্যাপক Parlante উপস্থাপন করার জন্য ব্যবহৃত 837 00:36:48,330 --> 00:36:51,840 কি ছিল যাওয়া মেমরি জড়িত প্রোগ্রাম. 838 00:36:51,840 --> 00:36:54,850 >> তাই এর এই নতুন করে বলা যাক গল্প সুপার সংক্ষিপ্তভাবে. 839 00:36:54,850 --> 00:36:58,720 এই প্রথম দুই লাইন, মধ্যে ইংরেজি, আপনি কি বলতে হবে, না? 840 00:36:58,720 --> 00:37:01,230 841 00:37:01,230 --> 00:37:05,430 শুধু যুক্তিসঙ্গতভাবে মানুষের, কিন্তু সামান্য পরিভাষা, একটি ছুরিকাঘাত নিতে. 842 00:37:05,430 --> 00:37:06,346 শ্রোতা: [শ্রবণাতীত]. 843 00:37:06,346 --> 00:37:07,705 844 00:37:07,705 --> 00:37:11,080 >> ডেভিড জে MALAN: ঠিক আছে, আপনি প্রতিষ্ঠার করছি আপনার x এবং y ভেরিয়েবল ঠিকানা. 845 00:37:11,080 --> 00:37:15,520 নেই বেশ, x এবং y হয় না প্রথাগত অর্থে ভেরিয়েবল. 846 00:37:15,520 --> 00:37:18,054 x এবং y অ্যাড্রেস বা ঠিকানা সংরক্ষণ করবে. 847 00:37:18,054 --> 00:37:19,220 তাই আসুন এই আরো একবার চেষ্টা করুন. 848 00:37:19,220 --> 00:37:21,010 একটি খারাপ শুরু, যদিও. 849 00:37:21,010 --> 00:37:21,510 হ্যাঁ? 850 00:37:21,510 --> 00:37:22,426 >> শ্রোতা: [শ্রবণাতীত]. 851 00:37:22,426 --> 00:37:23,966 852 00:37:23,966 --> 00:37:24,840 ডেভিড জে MALAN: গুড. 853 00:37:24,840 --> 00:37:26,173 আমি যে একটু ক্লিনার মনে করি. 854 00:37:26,173 --> 00:37:28,630 দুই পয়েন্টার, দুটি পূর্ণসংখ্যার ঘোষণা. 855 00:37:28,630 --> 00:37:30,150 এবং আমরা তাদের x এবং y আহ্বান করছি. 856 00:37:30,150 --> 00:37:32,790 অথবা আমরা যদি আঁকা এই একটি ছবি হিসাবে, আবার, 857 00:37:32,790 --> 00:37:36,410 বেশ সহজভাবে যে সব প্রত্যাহার আমরা যে প্রথম লাইন সঙ্গে করছেন 858 00:37:36,410 --> 00:37:39,690 এই মত একটি বক্স অঙ্কন করা হয়, এটা কিছু আবর্জনা মান সঙ্গে, 859 00:37:39,690 --> 00:37:41,920 এবং তারপর এটি x কলিং, এবং এই মত অন্য একটি বক্স, 860 00:37:41,920 --> 00:37:43,880 কিছু আবর্জনা মান সঙ্গে তা, Y কলিং এটি. 861 00:37:43,880 --> 00:37:45,810 আমরা দুই ঘোষণা করেছি পয়েন্টার যে শেষ পর্যন্ত 862 00:37:45,810 --> 00:37:47,860 কোন int এর ঠিকানা সংরক্ষণ করবে. 863 00:37:47,860 --> 00:37:49,170 সুতরাং যে সব আছে. 864 00:37:49,170 --> 00:37:53,290 >> Binky অনলাইন এই কি তাই যখন, মৃত্তিকা শুধু ভালো লাগছিল. 865 00:37:53,290 --> 00:37:55,350 এবং নিক শুধু ধরনের তীর আবৃত, 866 00:37:55,350 --> 00:37:57,590 যদিও তারা কোথাও প্রতি নির্দেশ করছি না বিশেষ করে, কারণ তারা ঠিক করছি 867 00:37:57,590 --> 00:37:58,250 আবর্জনা মান. 868 00:37:58,250 --> 00:38:01,670 তারা স্পষ্টভাবে সক্রিয়া না কোথাও বিশেষ. 869 00:38:01,670 --> 00:38:03,980 >> এখন পরের লাইন কোড, রিকল, এই ছিল. 870 00:38:03,980 --> 00:38:07,510 , যুক্তিসঙ্গতভাবে ব্যবহারকারী বান্ধব তাই কিন্তু কিছুটা প্রযুক্তিগত ইংরেজি, 871 00:38:07,510 --> 00:38:09,790 কোড করছেন এই লাইন কি? 872 00:38:09,790 --> 00:38:10,391 হ্যাঁ? 873 00:38:10,391 --> 00:38:11,333 >> শ্রোতা: [শ্রবণাতীত]. 874 00:38:11,333 --> 00:38:12,746 875 00:38:12,746 --> 00:38:13,950 >> ডেভিড জে MALAN: পারফেক্ট. 876 00:38:13,950 --> 00:38:17,016 এটি চাঙ্গড় বণ্টন কোন int এর আকার যে মেমরি. 877 00:38:17,016 --> 00:38:18,140 এবং যে অর্ধেক উত্তর. 878 00:38:18,140 --> 00:38:20,056 আপনি ঠিক উত্তর মত প্রকাশের অর্ধেক. 879 00:38:20,056 --> 00:38:22,473 কি ঘটছে সমান সাইন বাম দিকে? 880 00:38:22,473 --> 00:38:22,972 হ্যাঁ? 881 00:38:22,972 --> 00:38:24,814 শ্রোতা: এবং নির্ধারণ এটি পরিবর্তনশীল x কিভাবে? 882 00:38:24,814 --> 00:38:27,690 >> ডেভিড জে MALAN: এবং নির্ধারণ এটি পরিবর্তনশীল x এর. 883 00:38:27,690 --> 00:38:31,650 সংক্ষিপ্তবৃত্তি, ডান দিকে বরাদ্দ তাই যথেষ্ট মেমরি কোন int সঞ্চয়. 884 00:38:31,650 --> 00:38:34,150 কিন্তু malloc বিশেষভাবে ঠিকানা ফেরৎ 885 00:38:34,150 --> 00:38:37,270 আপনি করেছি যা মেমরি যে তাল, এর শুধু x এর মধ্যে সংরক্ষণ করা হয় প্রস্তাবিত. 886 00:38:37,270 --> 00:38:42,560 >> তাই কি নিক Binky অনলাইন সঙ্গে শেষ সময় হয় তিনি যে পয়েন্টার আউট টেনেছেন, মাটি, 887 00:38:42,560 --> 00:38:46,820 একটি মেমরি সাদা খণ্ড এখন নির্দেশ যে কোন int এর সাইজ সমান. 888 00:38:46,820 --> 00:38:49,360 এবং প্রকৃতপক্ষে, যে সেসব চার বাইট প্রতিনিধিত্ব করতে. 889 00:38:49,360 --> 00:38:55,310 >> কোড এখন, পরের লাইন এই কি, তারা এক্স 42 পায়. 890 00:38:55,310 --> 00:38:58,530 তাই 42 উপর সহজবোধ্য ডান দিকে, জীবনের অর্থ. 891 00:38:58,530 --> 00:39:00,500 বাম দিকে, তারা এক্স মানে কি? 892 00:39:00,500 --> 00:39:01,600 893 00:39:01,600 --> 00:39:03,280 এটা ঠিক আছে gone-- যে খুব থাকতে পারে. 894 00:39:03,280 --> 00:39:04,220 ঠিক আছে. 895 00:39:04,220 --> 00:39:06,875 >> শ্রোতা: মূলত, [শ্রবণাতীত] যান 896 00:39:06,875 --> 00:39:07,750 ডেভিড জে MALAN: গুড. 897 00:39:07,750 --> 00:39:08,760 শ্রোতা: [শ্রবণাতীত]. 898 00:39:08,760 --> 00:39:09,760 ডেভিড জে MALAN: যথাযথভাবে. 899 00:39:09,760 --> 00:39:11,979 বাম দিকে এক্স যান. 900 00:39:11,979 --> 00:39:12,520 এক্স ঠিকানা. 901 00:39:12,520 --> 00:39:15,520 এটা 33 অক্সফোর্ড স্ট্রিট, বা OX1 মত. 902 00:39:15,520 --> 00:39:18,690 এবং তারা এক্স যে যেতে মানে ঠিকানা এবং কি সেখানে রাখা? 903 00:39:18,690 --> 00:39:19,520 42. 904 00:39:19,520 --> 00:39:21,290 >> তাই প্রকৃতপক্ষে, যে নিক ঠিক কি. 905 00:39:21,290 --> 00:39:23,740 তিনি দ্বারা শুরু মূলত, মানসিকভাবে 906 00:39:23,740 --> 00:39:26,270 একটি আঙুল নির্দেশ এক্স, তীর অনুসরণ 907 00:39:26,270 --> 00:39:30,670 ডান হাত সাদা বাক্স পার্শ্ব, এবং সেখানে 42 নম্বর নির্বাণ. 908 00:39:30,670 --> 00:39:34,120 কিন্তু তারপর জিনিষ পেয়েছিলাম একটি সামান্য বিপজ্জনক, ডান? 909 00:39:34,120 --> 00:39:35,860 Binky এর তার মাথা হারান সম্পর্কে. 910 00:39:35,860 --> 00:39:39,465 >> তারা Y মানে কি, 13, দুর্ভাগ্য সমান? 911 00:39:39,465 --> 00:39:43,620 তাই তারা Y মানে y মধ্যে ঠিকানা যান. 912 00:39:43,620 --> 00:39:45,630 কিন্তু y মধ্যে ঠিকানা কি? 913 00:39:45,630 --> 00:39:47,899 914 00:39:47,899 --> 00:39:49,440 সমস্ত অধিকার, এটা আবর্জনা মান, ডান? 915 00:39:49,440 --> 00:39:50,800 আমি একটি প্রশ্ন চিহ্ন হিসাবে এটি সৃষ্টি. 916 00:39:50,800 --> 00:39:54,850 নিক আপ কার্ল তীর হিসাবে এটা সৃষ্টি. 917 00:39:54,850 --> 00:39:59,600 এবং যত তাড়াতাড়ি আপনি চেষ্টা হিসেবে সেখানে যেতে বলে, তারকা Y না, 918 00:39:59,600 --> 00:40:03,872 কিন্তু একটি বৈধ আছে না ঠিকানা, এটা কিছু বাজে অবস্থান, 919 00:40:03,872 --> 00:40:05,080 ক্র্যাশ প্রোগ্রাম করে যাচ্ছে. 920 00:40:05,080 --> 00:40:08,580 এবং Binky এর মাথা যাচ্ছে এটা করেনি, এখানে উড়ে আসা বন্ধ. 921 00:40:08,580 --> 00:40:12,130 >> শেষ পর্যন্ত, এই প্রোগ্রাম তাই শুধু ফ্ল্যাট আউট ত্রুটি ছিল. 922 00:40:12,130 --> 00:40:13,540 এটি একটি বগী প্রোগ্রাম ছিল. 923 00:40:13,540 --> 00:40:14,760 এবং এটা সংশোধন করা প্রয়োজন. 924 00:40:14,760 --> 00:40:18,260 এবং একমাত্র উপায়, সত্যিই, এটা ঠিক করা হতে পারে, উদাহরণস্বরূপ, এই লাইন, 925 00:40:18,260 --> 00:40:21,010 এমনকি আমরা পেতে না, যা কারণ প্রোগ্রাম খুব শীঘ্রই ক্র্যাশ করেছে. 926 00:40:21,010 --> 00:40:26,170 কিন্তু আমরা এই স্থির ছিল, কি প্রভাব Y x সমান আছে করছেন না? 927 00:40:26,170 --> 00:40:30,010 ওয়েল, এটা মূলত এ y পয়েন্ট যাই হোক না কেন মান x নির্দেশ করা হয়. 928 00:40:30,010 --> 00:40:32,430 >> নিক এর গল্প তাই, বা Binky এর গল্প, উভয় 929 00:40:32,430 --> 00:40:34,640 x এবং y প্রতি নির্দেশ হয়েছে মেমরি সাদা খণ্ড, 930 00:40:34,640 --> 00:40:38,300 তাই যে, অবশেষে, যখন আপনি Y আবার 13 এর সমান তারকা না, 931 00:40:38,300 --> 00:40:43,080 আপনি 13 নির্বাণ শেষ যথাযথ অবস্থান. 932 00:40:43,080 --> 00:40:47,640 তাই এই লাইন পুরোপুরি হয় বৈধ, এই এক ছাড়া, 933 00:40:47,640 --> 00:40:51,730 এটা আপনি আগে ঘটেছে আসলে Y কিছু মান নির্ধারিত হয়. 934 00:40:51,730 --> 00:40:54,290 >> এখন সৌভাগ্যক্রমে, আপনি করবেন না সব মাধ্যমে কারণ আছে 935 00:40:54,290 --> 00:40:56,560 আপনার নিজের উপর বিষয় এই ধরণের. 936 00:40:56,560 --> 00:40:59,310 আমাকে এগিয়ে যান এবং খুলুন এখানে একটি টার্মিনাল উইন্ডোর 937 00:40:59,310 --> 00:41:03,050 এবং শুধুমাত্র একটি মুহূর্ত জন্য, খুলুন, একটি সুপার ছোট প্রোগ্রাম যে 938 00:41:03,050 --> 00:41:04,360 এছাড়াও বাছাই করা অর্থহীন. 939 00:41:04,360 --> 00:41:05,152 এটা অরুপ. 940 00:41:05,152 --> 00:41:06,610 এটা দরকারী কিছু অর্জন করে না. 941 00:41:06,610 --> 00:41:10,180 কিন্তু সমস্যা প্রকট না মেমরি, তাই এর কটাক্ষপাত করা যাক. 942 00:41:10,180 --> 00:41:11,830 >> মুখ্য, সুপার সহজ. 943 00:41:11,830 --> 00:41:14,830 এটা দৃশ্যত একটি ফাংশন কল, চ, এবং তারপর 0 প্রদান করে. 944 00:41:14,830 --> 00:41:16,310 এটা জগাখিচুড়ি এই ধরনের কঠিন. 945 00:41:16,310 --> 00:41:18,540 তাই প্রধান এ পর্যন্ত বেশ ভাল. 946 00:41:18,540 --> 00:41:20,100 >> তাই চ সমস্যাযুক্ত. 947 00:41:20,100 --> 00:41:22,120 এবং শুধু অনেক না করা এটি নামকরণ মধ্যে প্রচেষ্টা 948 00:41:22,120 --> 00:41:23,990 এখানে, কোড ফোকাস রাখা. 949 00:41:23,990 --> 00:41:25,740 চ দুই লাইন আছে. 950 00:41:25,740 --> 00:41:27,610 এবং এর এখন কি ঘটছে তা দেখতে. 951 00:41:27,610 --> 00:41:29,840 তাই এক হাত এখানে এবং আমাকে করা 952 00:41:29,840 --> 00:41:32,680 পূর্ববর্তী সঙ্গে এই সামঞ্জস্যপূর্ণ এক হাত উদাহরণস্বরূপ, 953 00:41:32,680 --> 00:41:35,830 বাম দিকে হয় ইংরেজি, কি করছেন? 954 00:41:35,830 --> 00:41:36,493 এটা হচ্ছে ÑÑ 955 00:41:36,493 --> 00:41:37,701 শ্রোতা: একটি পয়েন্টার নির্মাণ. 956 00:41:37,701 --> 00:41:40,830 ডেভিড জে MALAN: একটি পয়েন্টার নির্মাণ কোন int এবং কলিং এটি x. 957 00:41:40,830 --> 00:41:43,789 তাই ঐ বাক্সে এক তৈরি হচ্ছে আমি স্পর্শ পর্দায় রাখা অঙ্কন. 958 00:41:43,789 --> 00:41:45,913 এবং এখন, ডান হাত পাশ, না malloc, অবশ্যই, 959 00:41:45,913 --> 00:41:47,420 মেমরি একটি খণ্ড বণ্টন করা হয়. 960 00:41:47,420 --> 00:41:49,989 এবং শুধু পরিষ্কার হবে, কিভাবে অনেক মেমরি দৃশ্যত এটা 961 00:41:49,989 --> 00:41:52,030 বণ্টন, আপনি যদি ঠিক এখানে কোন ধরনের গণিত না? 962 00:41:52,030 --> 00:41:53,200 963 00:41:53,200 --> 00:41:54,040 >> সুতরাং এটি 40 বাইট. 964 00:41:54,040 --> 00:41:57,400 এবং আমি জানি যে আমি একটি জানেন শুধুমাত্র কারণ কোন int, CS50 প্রয়োগ উপর, অন্তত, 965 00:41:57,400 --> 00:41:58,060 চার বাইট. 966 00:41:58,060 --> 00:41:59,610 তাই 10 বার 4 40. 967 00:41:59,610 --> 00:42:04,924 তাই এই একটি এক্স সংরক্ষণ করা হয়, ঠিকানা 40 ints মধ্যে প্রথম যে 968 00:42:04,924 --> 00:42:07,340 ফিরে স্থান বরাদ্দ করা হয়েছে, ফিরে যাও, ফিরে যাও, ফিরে যাও. 969 00:42:07,340 --> 00:42:08,470 >> এবং যে malloc সম্পর্কে কি কি. 970 00:42:08,470 --> 00:42:11,261 এটা একটা সামান্য মেমরি লাগবে না এখানে, এখানে একটু, একটু এখানে. 971 00:42:11,261 --> 00:42:14,220 এটি আপনি মেমরি এক খণ্ড দেয় contiguously, অপারেটিং থেকে 972 00:42:14,220 --> 00:42:15,240 সিস্টেম. 973 00:42:15,240 --> 00:42:18,500 >> এখন এই সম্পর্কে কি, এক্স বন্ধনী 10 0 সমান? 974 00:42:18,500 --> 00:42:19,470 কোড নির্বিচারে লাইন. 975 00:42:19,470 --> 00:42:21,100 এটা দরকারী কিছু অর্জন করে না. 976 00:42:21,100 --> 00:42:26,128 কিন্তু এটা আকর্ষণীয় এক্স বন্ধনী 10-- কারণ? 977 00:42:26,128 --> 00:42:26,628 হ্যাঁ? 978 00:42:26,628 --> 00:42:27,912 >> শ্রোতা: [শ্রবণাতীত]? 979 00:42:27,912 --> 00:42:30,500 >> ডেভিড জে MALAN: এক্স বন্ধনী 10 নাল হতে হবে না. 980 00:42:30,500 --> 00:42:35,070 নাল বিস্তারিত খেলার মধ্যে আসে স্ট্রিং সঙ্গে, একটি স্ট্রিং এর শেষে. 981 00:42:35,070 --> 00:42:36,700 কিন্তু একটি ভাল চিন্তা. 982 00:42:36,700 --> 00:42:39,615 >> কত বড়, এমনকি, এই অ্যারে আমি 40 বাইট বরাদ্দ করেছি যদিও? 983 00:42:39,615 --> 00:42:42,560 984 00:42:42,560 --> 00:42:43,690 এটা ঠিক, নয় মাধ্যমে 0? 985 00:42:43,690 --> 00:42:45,120 এটা মোট 10 ints হয় না. 986 00:42:45,120 --> 00:42:48,790 40 বাইট, কিন্তু 10 ints হয়, 0 মাধ্যমে 0 ইন্ডেক্স. 987 00:42:48,790 --> 00:42:50,930 >> তাই যে x বন্ধনী 10 কি হয়? 988 00:42:50,930 --> 00:42:53,090 এটা আসলে কিছু অজানা আবর্জনা মান. 989 00:42:53,090 --> 00:42:54,780 এটা আমার অন্তর্গত নয় এমন মেমরি. 990 00:42:54,780 --> 00:42:59,650 আমি যে স্পর্শ করা উচিত নয় বাইট নম্বর 41, 42, 43, 44. 991 00:42:59,650 --> 00:43:01,420 আমি খুব বেশী দূরে সামান্য যাচ্ছি. 992 00:43:01,420 --> 00:43:04,490 >> এবং প্রকৃতপক্ষে, আমি চালানো এই প্রোগ্রাম, এটি খুব ভাল বিপর্যস্ত হতে পারে. 993 00:43:04,490 --> 00:43:05,790 তবে কখনও কখনও, আমরা ভাগ্যবান পাবেন. 994 00:43:05,790 --> 00:43:07,706 তাই শুধু প্রকট আপাততঃ এবং উন্মুক্তভাবে, 995 00:43:07,706 --> 00:43:11,000 যদি আপনি আগে না জানি এটিকে এর এই চালানো যাক না. 996 00:43:11,000 --> 00:43:12,480 এটা আসলে বিপর্যস্ত না. 997 00:43:12,480 --> 00:43:15,032 >> কিন্তু আমি এই পরিবর্তন যদি উদাহরণস্বরূপ, 1000 মত হতে 998 00:43:15,032 --> 00:43:16,740 সত্যিই এই করতে ইচ্ছাকৃত, এর দেখতে দিন 999 00:43:16,740 --> 00:43:18,710 আমরা পেতে পারেন যদি এটি এই সময় বিপর্যস্ত. 1000 00:43:18,710 --> 00:43:20,070 ঠিক আছে, এটা বিপর্যস্ত না. 1001 00:43:20,070 --> 00:43:22,600 কিভাবে 100,000 সম্পর্কে? 1002 00:43:22,600 --> 00:43:25,000 এর এটি পুনর্নির্মাণ করা যাক, এবং এখন এটি পুনরায় আরম্ভ করুন. 1003 00:43:25,000 --> 00:43:25,500 ঠিক আছে. 1004 00:43:25,500 --> 00:43:25,960 ছি ছি. 1005 00:43:25,960 --> 00:43:26,460 ঠিক আছে. 1006 00:43:26,460 --> 00:43:29,090 তাই দৃশ্যত, আবার, এই মেমরি অংশ, তাই কথা বলতে, 1007 00:43:29,090 --> 00:43:32,660 তাই আমরা করতে পারেন, যুক্তিসঙ্গতভাবে বড় আবার এবং আবার পেতে ভাগ্যবান. 1008 00:43:32,660 --> 00:43:36,510 কিন্তু শেষ পর্যন্ত, একবার আপনি হাস্যকর পেতে এবং সত্যিই, পর্দা পর্যন্ত যেতে আউট 1009 00:43:36,510 --> 00:43:39,120 আপনি, যে সত্যিই মেমরি স্পর্শ সত্যিই আপনি অন্তর্গত নয়. 1010 00:43:39,120 --> 00:43:40,870 >> কিন্তু অকপটে, এই বাগ ধরণের যাচ্ছে 1011 00:43:40,870 --> 00:43:43,020 কঠিন এবং কঠিন হতে আপনার নিজের উপর চিন্তা করা. 1012 00:43:43,020 --> 00:43:47,880 কিন্তু সৌভাগ্যক্রমে, প্রোগ্রামার হিসাবে, আমরা আমাদের জন্য এই কাজ করার অনুমতি দেয়. 1013 00:43:47,880 --> 00:43:50,140 তাই এই সম্ভবত,, এক Ugliest প্রোগ্রাম, 1014 00:43:50,140 --> 00:43:52,060 GDB এর আউটপুট চেয়ে আরও uglier. 1015 00:43:52,060 --> 00:43:55,670 কিন্তু এটা সবসময় একটি লাইন আছে বা সুপার দরকারী যে দুই. 1016 00:43:55,670 --> 00:44:00,310 >> Valgrind সাহায্য করে যে একটি প্রোগ্রাম আপনি একটি প্রোগ্রাম ডিবাগ না, জন্মগতভাবে, 1017 00:44:00,310 --> 00:44:03,500 কিন্তু মেমরি সংক্রান্ত খুঁজে সমস্যা, বিশেষভাবে. 1018 00:44:03,500 --> 00:44:07,590 এটি স্বয়ংক্রিয়ভাবে আপনার জন্য আপনার কোড চালানো হবে আপনি এবং অন্তত দুটি জিনিস জন্য, দেখুন. 1019 00:44:07,590 --> 00:44:10,680 এক, আপনি কিছু করবেন স্পর্শ মেমরি মত আপতিক 1020 00:44:10,680 --> 00:44:11,980 যে আপনি অন্তর্গত না? 1021 00:44:11,980 --> 00:44:13,590 এটা আপনি সেই ক্ষেত্রে এটি সাহায্য করবে. 1022 00:44:13,590 --> 00:44:15,710 >> এবং দুই, এটা সাহায্য করবে আপনি কিছু বলা খুঁজে 1023 00:44:15,710 --> 00:44:19,270 মেমরি ডিস্ক্রিপ্টরের লিক সম্বন্ধে সূচিত, আমরা যা সম্পূর্ণ উপেক্ষা করা, naively,, 1024 00:44:19,270 --> 00:44:21,380 কিছু সময়ের জন্য এবং উদাসীন. 1025 00:44:21,380 --> 00:44:23,140 কিন্তু এটি সব দেখা যাচ্ছে, এই সময়, যখনই 1026 00:44:23,140 --> 00:44:26,620 আপনি GetString বলা করেছি আমাদের প্রোগ্রাম অনেক, 1027 00:44:26,620 --> 00:44:28,930 আপনি অপারেটিং বলছি মেমরি সিস্টেম, 1028 00:44:28,930 --> 00:44:32,070 কিন্তু আপনি যদি কোন টনক আছে কখনও এটি প্রদান 1029 00:44:32,070 --> 00:44:36,169 ফিরে, করছেন unalloc, বা বিনামূল্যে, এটা বলা হচ্ছে না. 1030 00:44:36,169 --> 00:44:37,960 না, কারণ আমরা কখনও করেছি তাই আপনাকে জিজ্ঞাসা করা. 1031 00:44:37,960 --> 00:44:41,250 >> কিন্তু এই সব সময়, প্রোগ্রাম আপনি সি লেখা হয়েছে করেছি 1032 00:44:41,250 --> 00:44:43,800 মেমরি লিক করা হয়েছে, অপারেটিং জিজ্ঞাসা 1033 00:44:43,800 --> 00:44:46,190 আরো এবং আরো জন্য সিস্টেম স্ট্রিং এবং যে কোন বস্তু জন্য মেমরি, 1034 00:44:46,190 --> 00:44:47,870 কিন্তু তা ফিরে হস্তান্তর না. 1035 00:44:47,870 --> 00:44:50,080 এবং এখন এই একটি বিট একটি অতিসরলীকরণ, 1036 00:44:50,080 --> 00:44:53,550 কিন্তু আপনি কি কখনও করেছি যদি আপনার ম্যাক চালানো বা বেশ কিছু সময়, খোলার জন্য আপনার পিসি 1037 00:44:53,550 --> 00:44:55,790 প্রোগ্রাম প্রচুর, হয়তো, প্রোগ্রাম বন্ধ 1038 00:44:55,790 --> 00:44:57,795 এবং এমনকি যদিও আপনার কম্পিউটার ক্র্যাশ করেনি, 1039 00:44:57,795 --> 00:45:01,690 এটা, তাই অনেক ধীর হচ্ছে এটা সত্যিই হিসাবে যদিও 1040 00:45:01,690 --> 00:45:04,290 মেমরি অনেক ব্যবহার করে বা সম্পদ, যদিও, 1041 00:45:04,290 --> 00:45:06,070 যদি আপনি না এমনকি কীবোর্ড স্পর্শ, 1042 00:45:06,070 --> 00:45:10,430 যে be-- কিন্তু always-- পারে পারে প্রোগ্রাম আপনি চলমান করছি যে হতে 1043 00:45:10,430 --> 00:45:11,920 নিজেদের মেমরি তথ্য ফাঁসের আছে. 1044 00:45:11,920 --> 00:45:15,645 এবং তারা আরো এবং অপারেটিং সিস্টেম জিজ্ঞাসা রাখা আরো মেমরি, কিন্তু এটি সম্পর্কে বিস্মরণ, 1045 00:45:15,645 --> 00:45:18,470 আসলে, এটা ব্যবহার করে না কিন্তু সুতরাং মেমরি দূরে গ্রহণ 1046 00:45:18,470 --> 00:45:20,500 এটি করতে চান হতে পারে যে অন্যান্য প্রোগ্রাম থেকে. 1047 00:45:20,500 --> 00:45:23,940 সুতরাং যে একটি সাধারণ ব্যাখ্যা. 1048 00:45:23,940 --> 00:45:25,940 এখন এখানে যেখানে Valgrind-এর এর আউটপুট সম্পূর্ণ হয় 1049 00:45:25,940 --> 00:45:29,290 যারা কম নৃশংস এবং একইভাবে আরো আরামদায়ক. 1050 00:45:29,290 --> 00:45:32,690 কিন্তু আকর্ষণীয় স্টাফ এখানে ডান আপ হয়. 1051 00:45:32,690 --> 00:45:37,060 এটা আমার একটি অবৈধ লেখার বলছে আকার চার, এই প্রোগ্রাম ঘটবে 1052 00:45:37,060 --> 00:45:40,640 বিশেষ করে, memory.c মধ্যে লাইন 21 এ. 1053 00:45:40,640 --> 00:45:45,450 >> আমি এইচএম, সেখানে প্রকৃতপক্ষে, 21 রেখায় যান আকার চার একটি অবৈধ লেখার. 1054 00:45:45,450 --> 00:45:46,250 কেন আকার চার? 1055 00:45:46,250 --> 00:45:49,500 ওয়েল, এই সংখ্যা এবং anything-- হতে পারে কোন int হয়. 1056 00:45:49,500 --> 00:45:50,450 সুতরাং এটি চার বাইট. 1057 00:45:50,450 --> 00:45:52,550 তাই আমি চার বাইট করছি নির্বাণ যেখানে তারা অন্তর্গত না. 1058 00:45:52,550 --> 00:45:55,080 এটা কি Valgrind-এর আসলে আমাকে বলছে. 1059 00:45:55,080 --> 00:45:57,600 তাছাড়া, এটা করবে না হিসাবে আমরা দেখতে পাবেন, আমাকে বলুন, 1060 00:45:57,600 --> 00:46:01,490 আপনি এই ভবিষ্যতে pset মধ্যে চালানো, এবং যদি আপনি যা প্রকৃতপক্ষে মেমরি, ফাঁস করেছি 1061 00:46:01,490 --> 00:46:05,300 আমি বলা করেছি, কারণ আমি আছে যদি malloc, কিন্তু আমি আসলে না 1062 00:46:05,300 --> 00:46:08,010 বিনামূল্যে, এই ক্ষেত্রে, বলা হয়, যা অবশেষে আমরা দেখতে পাবেন 1063 00:46:08,010 --> 00:46:09,830 যদি malloc বিপরীত. 1064 00:46:09,830 --> 00:46:10,860 1065 00:46:10,860 --> 00:46:12,930 >> তাই এখন, আমি একটি চূড়ান্ত উদাহরণ মনে করি. 1066 00:46:12,930 --> 00:46:14,050 1067 00:46:14,050 --> 00:46:16,690 তাই এই এক একটি সামান্য আরো রহস্যময়, কিন্তু এটি সম্ভবত 1068 00:46:16,690 --> 00:46:19,180 সবচেয়ে বড় কারণ , মেমরি সঙ্গে সতর্কতা অবলম্বন করা আবশ্যক 1069 00:46:19,180 --> 00:46:24,490 এবং কারণ যে অনেক প্রোগ্রাম এবং এমনকি এই দিন / অথবা ওয়েব সার্ভার,, 1070 00:46:24,490 --> 00:46:28,200 কোথাও খারাপ না দ্বারা অধিগৃহীত হয় ইন্টারনেট একরকম যারা 1071 00:46:28,200 --> 00:46:33,390 আপনার সার্ভারে বাজে প্যাকেট পাঠানোর আপনার অ্যাকাউন্ট আপোষ করার চেষ্টা করছে, 1072 00:46:33,390 --> 00:46:36,420 বা আপনার তথ্য গ্রহণ করা, বা শুধু সাধারণত একটি মেশিন নিতে. 1073 00:46:36,420 --> 00:46:38,910 বাফার ওভারফ্লো, হিসাবে নাম, মানে দাড়ায় 1074 00:46:38,910 --> 00:46:40,740 না কোন int, কিন্তু একটি বাফার উছল. 1075 00:46:40,740 --> 00:46:43,490 এবং একটি বাফার শুধু একটি অভিনব উপায় বলছে এটি একটি মেমরি গুচ্ছ. 1076 00:46:43,490 --> 00:46:46,710 >> এবং প্রকৃতপক্ষে, আমি একটি স্ট্রিং বলা পরিবর্তে এর বাফার, আগে. 1077 00:46:46,710 --> 00:46:49,234 এটি একটি বাফার যদি না, ইউটিউব অর্থে মত, 1078 00:46:49,234 --> 00:46:52,400 অথবা আপনি একটি ভিডিও পর্যবেক্ষণ করছেন যে কোন সময়, আপনি শব্দ বাফার উপলব্ধ করা হয়, দেখা হতে পারে 1079 00:46:52,400 --> 00:46:53,040 বিন্দু,, বিন্দু বিন্দু. 1080 00:46:53,040 --> 00:46:54,240 এটা অবিশ্বাস্যভাবে বিরক্তিকর. 1081 00:46:54,240 --> 00:46:55,990 এবং যে শুধু মানে আপনার ভিডিও প্লেয়ার যে 1082 00:46:55,990 --> 00:46:58,710 প্রচুর ডাউনলোড করার চেষ্টা করা হয় বাইট বাইট, প্রচুর 1083 00:46:58,710 --> 00:47:00,170 ইন্টারনেট থেকে একটি ভিডিও থেকে. 1084 00:47:00,170 --> 00:47:02,920 কিন্তু ধীর, তাই এটা চেষ্টা তাদের একটি গুচ্ছ ডাউনলোড করতে 1085 00:47:02,920 --> 00:47:06,430 যাতে একটি বাফার, একটি ধারক, ভরাট আপনি যে এটা পরে করতে পারেন যথেষ্ট বাইট আছে 1086 00:47:06,430 --> 00:47:09,174 আপনি ভিডিও প্রদর্শন ক্রমাগত pausing ছাড়া. 1087 00:47:09,174 --> 00:47:11,340 কিন্তু এটি আপনি করতে পারেন, সক্রিয় আউট এই বড় একটি বাফার আছে. 1088 00:47:11,340 --> 00:47:15,710 কিন্তু এই অনেক তথ্য রাখতে চেষ্টা এটা, এবং খুব খারাপ জিনিস ঘটতে পারে. 1089 00:47:15,710 --> 00:47:22,780 সুতরাং উদাহরণস্বরূপ, এর যাক একটি উদাহরণ এই চূড়ান্ত টিজার. 1090 00:47:22,780 --> 00:47:24,720 এই অন্য প্রোগ্রাম যে, প্রথম নজরে, 1091 00:47:24,720 --> 00:47:26,540 সুপার দরকারী কিছু না. 1092 00:47:26,540 --> 00:47:29,590 এটি একটি প্রধান ফাংশন আছে এর যে চ, যে ফাংশন কল. 1093 00:47:29,590 --> 00:47:36,640 এবং যে ফাংশন, চ, এখানে আছে, একটি গৃহস্থালি অ্যারে, আকার 12, সি বলা হয়. 1094 00:47:36,640 --> 00:47:39,340 এবং তারপর এটি এই ব্যবহার করে নতুন ফাংশন strncpy বলা হয়. 1095 00:47:39,340 --> 00:47:40,430 1096 00:47:40,430 --> 00:47:45,190 >> এটা, এই সহজ সঙ্গে, দেখা যাচ্ছে যে কোড সহজ লাইন, মাত্র দুই লাইন, 1097 00:47:45,190 --> 00:47:49,130 আমরা, আমার সম্পূর্ণ প্রোগ্রাম করেছেন এবং সেইজন্য, আমার সমগ্র কম্পিউটার, 1098 00:47:49,130 --> 00:47:54,000 এবং আমার ইউজার অ্যাকাউন্ট, এবং আমার হার্ড কেউ সম্ভাব্য প্রবন ড্রাইভ 1099 00:47:54,000 --> 00:47:58,170 যারা জানে এবং চালানোর জন্য যথেষ্ট ভাল একটি নির্দিষ্ট কমান্ড লাইন সঙ্গে এই প্রোগ্রাম 1100 00:47:58,170 --> 00:47:58,900 যুক্তি. 1101 00:47:58,900 --> 00:48:03,400 অন্য কথায়, যদি এই খারাপ লোক টাইপ করে argvargv [1] এর ভিতরে রাখে 1102 00:48:03,400 --> 00:48:08,750 কীবোর্ড একটি খুব বিশেষ পেরেছিলেন এ স্ট্রিং, না বর্ণমালা, 123, কিন্তু মূলত, 1103 00:48:08,750 --> 00:48:15,180 এক্সিকিউটেবল প্রতিনিধিত্বকারী বাইনারি চিহ্ন কোড, তিনি লিখেছেন যে একটি প্রোগ্রাম, 1104 00:48:15,180 --> 00:48:19,190 যা এই সহজ প্রোগ্রাম, সঙ্গে প্রোগ্রাম হাজার হাজার প্রতিনিধি 1105 00:48:19,190 --> 00:48:23,610 যে, অনুমান করা, একইভাবে প্রবন তিনি শেষ পর্যন্ত সব মুছে দিতে পারেন 1106 00:48:23,610 --> 00:48:26,680 আমার হার্ড ড্রাইভে ফাইল, একটি পেতে তিনি করতে পারেন, যাতে প্রম্পট জ্বলজ্বলে 1107 00:48:26,680 --> 00:48:30,170 তাদের নিজস্ব কমান্ড টাইপ করুন নিজেকে সব ফাইল ইমেইল করুন. 1108 00:48:30,170 --> 00:48:34,660 আমি কি করতে পারেন যে কিছু, তিনি সে এই কোড দিয়ে করতে পারেন. 1109 00:48:34,660 --> 00:48:36,575 >> আমরা এখনো পুরোপুরি এই সমাধান হবে না. 1110 00:48:36,575 --> 00:48:38,700 এবং আসলে, এটা যাচ্ছে একটু ছবি জড়িত 1111 00:48:38,700 --> 00:48:41,470 ভালো, আমরা শীঘ্রই আসবো যা সব ভাল বুঝতে. 1112 00:48:41,470 --> 00:48:44,480 কিন্তু আজকের জন্য, এর শেষ দিন , একটি সামান্য আরো আশা করছি, কি 1113 00:48:44,480 --> 00:48:48,360 বোধগম্য XKCD তামাশা, আমরা পরবর্তী সময়ে পুনরায় শুরু পর্যন্ত. 1114 00:48:48,360 --> 00:48:51,100 1115 00:48:51,100 --> 00:48:51,600 ঠিক আছে. 1116 00:48:51,600 --> 00:48:53,446 বুধবার আপনি দেখুন. 1117 00:48:53,446 --> 00:48:54,754 >> [সঙ্গীত বাজানো] 1118 00:48:54,754 --> 00:48:57,790 >> স্পিকার: এবং এখন, গভীর Daven Farnham দ্বারা চিন্তা,. 1119 00:48:57,790 --> 00:49:00,890 1120 00:49:00,890 --> 00:49:04,770 স্মৃতি একটি গাদা মধ্যে জাম্পিং ভালো হয় রবিবার বিকালে সুবর্ণ পাতা. 1121 00:49:04,770 --> 00:49:09,000 বায়ু প্রবাহিত, ঊর্ধ্বে নিক্ষেপণ আপনার উহু hair--, আমি দিন when-- মিস 1122 00:49:09,000 --> 00:49:11,100 1123 00:49:11,100 --> 00:49:12,650 >> [হাস্য] 1124 00:49:12,650 --> 00:49:13,750