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