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