1 00:00:00,000 --> 00:00:06,180 2 00:00:06,180 --> 00:00:07,820 >> JASON HIRSCHHORN: خوش آمدید به A5، همه. 3 00:00:07,820 --> 00:00:11,270 ما یک هفته هیجان انگیز جلوتر از ما، عمدتا به دلیل بسیاری از جدید وجود دارد 4 00:00:11,270 --> 00:00:12,350 در این اتاق مواجه است. 5 00:00:12,350 --> 00:00:12,920 این فوق العاده است. 6 00:00:12,920 --> 00:00:15,740 بسیاری از شما اینجا هستید شده توسط حادثه، که هم بهتر است. 7 00:00:15,740 --> 00:00:18,220 پس امیدوارم شما را حفظ کنیم. 8 00:00:18,220 --> 00:00:20,220 >> این هفته ما در حال رفتن به صرف بخش عمده ای از بخش 9 00:00:20,220 --> 00:00:21,870 آماده شدن برای مسابقه. 10 00:00:21,870 --> 00:00:26,580 بنابراین در دستور کار ما، ما قصد داریم به بحث کمی در مورد منابع برای کلاس، 11 00:00:26,580 --> 00:00:30,350 بلکه همچنین برای مسابقه، و پس از آن، دوباره، صرف بخش عمده ای از صحبت کردن در کلاس 12 00:00:30,350 --> 00:00:31,390 در مورد سوالات. 13 00:00:31,390 --> 00:00:33,900 هنگامی که ما در حال انجام پاسخ دادن به شما سوالات، و یا اگر سوالات خود را 14 00:00:33,900 --> 00:00:39,010 به طور طبیعی ما را به برخی از برنامه نویسی منجر شود، I مشکلات نمونه از midterms 15 00:00:39,010 --> 00:00:43,180 گذشته است که ما زندگی می کنند در بخش کد با هم که همچنین مطرح کردن برخی دیگر از 16 00:00:43,180 --> 00:00:45,420 موضوعات خوب برای پوشش. 17 00:00:45,420 --> 00:00:48,280 >> بنابراین برای اولین بار، به عنوان ما را از طریق برای رفته چند هفته گذشته به شما یادآوری 18 00:00:48,280 --> 00:00:51,700 بچه ها، یک تن از منابع وجود دارد برای این دوره. 19 00:00:51,700 --> 00:00:55,020 بسیاری از آنها خواهد بود فوق العاده مفید به شما به عنوان شما را به ادامه 20 00:00:55,020 --> 00:00:57,280 مطالعه برای آزمون 0، به دلیل آن روز سه شنبه است. 21 00:00:57,280 --> 00:00:59,630 بنابراین از همه شما بوده است مطالعه کمی. 22 00:00:59,630 --> 00:01:02,640 >> می باشد جزوات درسی و منبع وجود دارد کدی که شما باید 23 00:01:02,640 --> 00:01:04,050 قطعا بررسی کنید. 24 00:01:04,050 --> 00:01:05,019 سازمان دیده بان شورت. 25 00:01:05,019 --> 00:01:07,470 اتمام study.cs50.net. 26 00:01:07,470 --> 00:01:11,770 و پس از آن، در زیر ذکر شده، تعداد از دیگر منابع است. 27 00:01:11,770 --> 00:01:14,020 >> باز هم، مسابقه 0 از فردا در ساعت 1. 28 00:01:14,020 --> 00:01:18,230 اگر شما انجام داده است تا در حال حاضر، بررسی کنید از درباره امتحان 0 سند در 29 00:01:18,230 --> 00:01:21,370 صفحه خانگی درس به شکل که در آن شما در حال گرفتن به مسابقه. 30 00:01:21,370 --> 00:01:25,770 مسابقه شروع می شود در 01:10 و 70 دقیقه بعد به پایان می رسد. 31 00:01:25,770 --> 00:01:29,610 بنابراین اگر شما نشان می دهد تا پس از 1:10، شما رفتن به دریافت که بسیاری از دقیقه کمتر 32 00:01:29,610 --> 00:01:30,940 از 70 مسابقه را. 33 00:01:30,940 --> 00:01:33,570 بنابراین مطمئن شوید که شما وجود دارد در زمان. 34 00:01:33,570 --> 00:01:38,690 اگر شما یک دانش آموز گسترش هستید یا برخی از ملاحظات تست دیگر، 35 00:01:38,690 --> 00:01:40,400 ممکن است در 01:00 فردا باشد. 36 00:01:40,400 --> 00:01:43,540 اما باز هم، بررسی درباره امتحان 0 سند را به مطمئن شوید که شما می دانید وقتی که 37 00:01:43,540 --> 00:01:44,760 شما در حال گرفتن به مسابقه. 38 00:01:44,760 --> 00:01:46,440 من نوشت 75 دقیقه تا اینجا. 39 00:01:46,440 --> 00:01:48,580 من فکر می کنم که درست است، نه 70. 40 00:01:48,580 --> 00:01:53,420 >> این بخش شامل تمام مواد از یک هفته 0 به سخنرانی هفته گذشته روز چهارشنبه. 41 00:01:53,420 --> 00:01:59,350 و دوباره، برای این مسابقه، هر که سند، شما یکی دو طرفه و 8 42 00:01:59,350 --> 00:02:03,770 1/2 با 11 ورق کاغذ که شما به عنوان یادداشت استفاده در طول مسابقه. 43 00:02:03,770 --> 00:02:08,570 بسیاری از مردم، اگر نه اکثر مردم، دریافتند که تنها راه مفید 44 00:02:08,570 --> 00:02:11,970 برای مطالعه برای آزمون می باشد به یک ورق مطالعه، 45 00:02:11,970 --> 00:02:13,730 یک SIDER، خود را دارند. 46 00:02:13,730 --> 00:02:17,710 بنابراین در آنهایی که گذشته نگاه اگر شما آنهایی که در گذشته دیده می شود. 47 00:02:17,710 --> 00:02:19,960 دسترسی به دوستان برای دیدن آنچه که آنها در حال قرار دادن بر روی آنها. 48 00:02:19,960 --> 00:02:23,610 >> اما دست به پایین، بهترین راه که شما می توانید مطالعه از طریق همه چیز بروید و 49 00:02:23,610 --> 00:02:26,530 با چاقو تیز کردن و تراشیدن آن را به آنچه باید یا نباید در آن ورقه تعلق ندارد 50 00:02:26,530 --> 00:02:30,570 مقاله، چرا که فقط واقعا راه مفید را برای شما مطمئن شوید 51 00:02:30,570 --> 00:02:33,620 شما در حال رفتن را از طریق همه چیز و برخی از آشنایی با آن. 52 00:02:33,620 --> 00:02:36,690 بیشتر افراد، پیدا کنیم، حتی اگر آنها اند سطح کاغذ نشسته سمت راست 53 00:02:36,690 --> 00:02:39,840 در کنار آنها در مسابقه، آیا روشن نیست به آن، دلیل، دوباره، که بسیار 54 00:02:39,840 --> 00:02:43,290 روند رفتن را از طریق اطلاعات کمک کرده است تا آنها را یاد بگیرند. 55 00:02:43,290 --> 00:02:45,370 >> آیا هر کسی هر گونه سوال در مورد مسابقه 0؟ 56 00:02:45,370 --> 00:02:50,120 57 00:02:50,120 --> 00:02:51,450 او به همه - 58 00:02:51,450 --> 00:02:53,230 من قصد ندارم برای انجام این کار نشان می دهد از دست. 59 00:02:53,230 --> 00:02:53,550 اهمیتی ندارد. 60 00:02:53,550 --> 00:02:54,790 من که قرار بود به درخواست که آغاز مطالعه. 61 00:02:54,790 --> 00:02:58,360 اما من نمی خواهم به شما را تمام دست های خود را افزایش نمی دهد. 62 00:02:58,360 --> 00:03:01,290 پس مثل من گفت: - بله، AVI، پیش بروید. 63 00:03:01,290 --> 00:03:04,205 >> AVI: چه خواهد بود، کاری مفید به در یک پیجر قرار داده است؟ 64 00:03:04,205 --> 00:03:05,875 >> STUDENT: این تا به شما. 65 00:03:05,875 --> 00:03:08,210 >> JASON HIRSCHHORN: شما دریافت می کنید به استفاده از قضاوت خود را. 66 00:03:08,210 --> 00:03:13,220 چیزهای مفید برای قرار دادن در یک پیجر، اگر شما در مورد O بزرگ اشتباه گرفته 67 00:03:13,220 --> 00:03:17,510 زمان اجرا از انواع مختلف از جستجوها و انواع، قرار داده است که در وجود دارد در 68 00:03:17,510 --> 00:03:18,760 نمودار شیک پوش دستی. 69 00:03:18,760 --> 00:03:22,250 به این ترتیب، اگر شما سوال شد که در مسابقه، شما لازم نیست که سعی کنید و رقم 70 00:03:22,250 --> 00:03:23,560 آن را یا دلیل از زمان اجرا. 71 00:03:23,560 --> 00:03:24,730 شما فقط می توانید آن را کپی کنید به پایین. 72 00:03:24,730 --> 00:03:28,320 اگر شما در آزمونها گذشته، بسیاری از نگاه زمان، در حال اجرا سوالات زمان وجود دارد. 73 00:03:28,320 --> 00:03:34,150 به طوری که می تواند یک نمونه از خوب چیزی که برای قرار دادن بر روی خود را با یک پیجر. 74 00:03:34,150 --> 00:03:37,450 >> دیگر چیزهای خوب برای قرار دادن در، اگر شما در مورد چگونگی اعلام اشتباه 75 00:03:37,450 --> 00:03:40,570 تابع و یا چه قسمت های مختلف اعلان تابع است، ارسال 76 00:03:40,570 --> 00:03:43,400 که در تاریخ وجود دارد، یک نسخه عمومی و پس از آن شاید به عنوان مثال. 77 00:03:43,400 --> 00:03:47,290 اگر شما در مورد اشاره گر اشتباه هستید، یک نمودار از نحوه کار اشاره گر است 78 00:03:47,290 --> 00:03:48,660 احتمالا واقعا موثر است. 79 00:03:48,660 --> 00:03:52,440 اگر شما در مورد بازگشت، یک اشتباه است نمونه تابع بازگشتی وجود دارد 80 00:03:52,440 --> 00:03:54,980 همچنین می تواند ثابت کند واقعا موثر است. 81 00:03:54,980 --> 00:03:57,290 آیا که شما برخی از ایده ها را؟ 82 00:03:57,290 --> 00:04:01,820 >> AVI: شما نیاز به درک تمامی مراحل تدوین، مانند 83 00:04:01,820 --> 00:04:03,220 چگونه است که همه آثار؟ 84 00:04:03,220 --> 00:04:06,620 >> JASON HIRSCHHORN: همه چیز که تحت پوشش شده است می تواند 85 00:04:06,620 --> 00:04:08,060 نشان می دهد تا در مسابقه. 86 00:04:08,060 --> 00:04:08,930 سوالات - 87 00:04:08,930 --> 00:04:11,300 اما دوباره، بعضی چیز ها خواهد بود سنگینی از دیگران است. 88 00:04:11,300 --> 00:04:14,330 برخی از چیزهایی که دوباره آمده اند تا و دوباره در کلاس، در 89 00:04:14,330 --> 00:04:15,590 سخنرانی و بخش. 90 00:04:15,590 --> 00:04:17,220 چیزهای دیگر ندارد آمده تا که اغلب. 91 00:04:17,220 --> 00:04:22,900 >> ما مقدار زیادی صحبت کردیم در مورد # شامل و -L چیزی و چه کسانی که در معنی 92 00:04:22,900 --> 00:04:24,390 فرایند تدوین. 93 00:04:24,390 --> 00:04:29,120 ما مقدار زیادی صحبت کردیم در مورد GDB، چسبیده، کسانی که پرچم های متفاوتی استفاده می کنیم زمانی که 94 00:04:29,120 --> 00:04:33,100 ما چیزی کامپایل، و آنچه make15، به عنوان مثال، واقعا 95 00:04:33,100 --> 00:04:34,510 معنی و واقعا. 96 00:04:34,510 --> 00:04:38,110 ما به همان اندازه در مورد بحث نیست هر قدم در 97 00:04:38,110 --> 00:04:39,240 فرایند تدوین. 98 00:04:39,240 --> 00:04:40,410 ما هنوز در مورد آن صحبت کردیم. 99 00:04:40,410 --> 00:04:42,550 پس از آن هنوز هم چیزی است که شما باید با آن آشنا باشد. 100 00:04:42,550 --> 00:04:44,610 اما باز هم، ما نمی شود - 101 00:04:44,610 --> 00:04:49,140 چیزهایی که می آیند تا بیشتر در کلاس به احتمال زیاد بیشتر به آمده تا بیشتر 102 00:04:49,140 --> 00:04:52,495 اغلب و به شدت بیشتری وزن در مسابقه. 103 00:04:52,495 --> 00:04:53,280 >> دانلود. 104 00:04:53,280 --> 00:04:54,580 هر گونه سؤال دیگر در مورد مسابقه 0؟ 105 00:04:54,580 --> 00:04:57,660 106 00:04:57,660 --> 00:05:00,050 >> OK، بنابراین من یک لیست از قرار موضوع در هیئت مدیره. 107 00:05:00,050 --> 00:05:01,550 من را از طریق برنامه درسی رفت. 108 00:05:01,550 --> 00:05:07,340 من را از طریق بخش بررسی از رفت شب گذشته و کسانی که اسلاید آمد تا 109 00:05:07,340 --> 00:05:13,710 با یک لیست غیر جامع از موضوعات که ما تا کنون در CS50 تحت پوشش 110 00:05:13,710 --> 00:05:16,800 و چیزهایی که ممکن است در مسابقه ظاهر می شود. 111 00:05:16,800 --> 00:05:19,900 بنابراین من قصد ندارم از طریق رفتن هر یک از این. 112 00:05:19,900 --> 00:05:22,370 که خیلی بیشتر را زمان از ما در حال حاضر. 113 00:05:22,370 --> 00:05:26,880 اما من به این امیدوارم تنه زدن قرار داده تا در اینجا حافظه خود را به عنوان به چیزهایی است که ممکن است 114 00:05:26,880 --> 00:05:28,420 و یا ممکن است به عنوان آشنا با شما. 115 00:05:28,420 --> 00:05:32,850 >> و من دوست دارم به صرف بخش عمده ای از بخش پاسخ به سوالات شما در مورد 116 00:05:32,850 --> 00:05:35,130 این مباحث، موضوعاتی که در اینجا پوشش داده نمی شوند. 117 00:05:35,130 --> 00:05:36,130 ما می توانیم شبه کد ارسال. 118 00:05:36,130 --> 00:05:40,010 ما می توانیم کد واقعی ارسال برای اطمینان از اینکه شما - 119 00:05:40,010 --> 00:05:44,280 من می توانم به سوال شما پاسخ داده و کمک به همه اساسا درک 120 00:05:44,280 --> 00:05:48,330 بسیاری از این موضوعات تا شما احساس آماده و راحت با رفتن به 121 00:05:48,330 --> 00:05:50,150 فردا مسابقه. 122 00:05:50,150 --> 00:05:52,300 پس بیش از این لیست به عنوان خوانده شده. 123 00:05:52,300 --> 00:05:54,780 شما امیدوارم به قسمت با برخی از سوالات نیز هست. 124 00:05:54,780 --> 00:05:58,480 وقتی که شما آماده، بالا بردن دست خود را و ما آغاز خواهد شد. 125 00:05:58,480 --> 00:06:01,590 126 00:06:01,590 --> 00:06:05,200 >> به خاطر داشته باشید، به سوالات شما، هیچ سوال احمقانه وجود دارد. 127 00:06:05,200 --> 00:06:06,250 ما شنیده ام که بسیاری. 128 00:06:06,250 --> 00:06:09,490 و به سوالات شما، من حاضر هستم به شرط، بسیاری از مردم دیگر هر دو 129 00:06:09,490 --> 00:06:11,740 اینجا نشسته و به تماشای آنلاین نیز هست. 130 00:06:11,740 --> 00:06:13,770 بنابراین شما فقط می توانید به مردم کمک با پرسیدن سوال. 131 00:06:13,770 --> 00:06:15,070 مارکوس. 132 00:06:15,070 --> 00:06:18,040 >> MARCUS: بین پشته و پشته، یک پیش اختصاص داده است 133 00:06:18,040 --> 00:06:22,880 درصد از حافظه است که به عنوان تعریف شده این است که برای پشته و یا برای پشته؟ 134 00:06:22,880 --> 00:06:25,010 و یا چگونه است که کار، دقیقا انجام می دهد؟ 135 00:06:25,010 --> 00:06:26,230 >> JASON HIRSCHHORN: سؤال بسیار خوبی است. 136 00:06:26,230 --> 00:06:28,640 من قصد دارم به عقب ردیابی کمی. 137 00:06:28,640 --> 00:06:30,910 آیا همه - 138 00:06:30,910 --> 00:06:31,660 لطفا صادقانه در اینجا. 139 00:06:31,660 --> 00:06:34,130 من می دانم که شما می خواهم برای بالا بردن خود را دست در مقابل همسالان خود. 140 00:06:34,130 --> 00:06:38,510 اما افرادی که احساس وجود دارد ناراحت کننده با پشته و توده 141 00:06:38,510 --> 00:06:42,980 و می خواهم برای بیش از که و آنچه در آن چیست؟ 142 00:06:42,980 --> 00:06:43,880 دست خود را بالا ببرید اگر - 143 00:06:43,880 --> 00:06:44,420 OK. 144 00:06:44,420 --> 00:06:45,120 متشکرم. 145 00:06:45,120 --> 00:06:48,420 بنابراین ما در حال به بیش از پشته بروید و پشته واقعا به سرعت و پس از آن 146 00:06:48,420 --> 00:06:50,370 حرکت به پاسخ به سوال شما. 147 00:06:50,370 --> 00:06:58,250 >> بنابراین اگر ما بیرون کشیدن از یک جعبه برای نشان دادن حافظه در کامپیوتر شما، چه برخی از آنها 148 00:06:58,250 --> 00:07:02,160 چیزهایی که در این جعبه برود؟ 149 00:07:02,160 --> 00:07:03,630 اصلی. 150 00:07:03,630 --> 00:07:04,020 تابع اصلی. 151 00:07:04,020 --> 00:07:05,890 کجا اصلی بروید؟ 152 00:07:05,890 --> 00:07:08,090 >> STUDENT: [نامفهوم]. 153 00:07:08,090 --> 00:07:09,390 >> JASON HIRSCHHORN: پس ما قرار داده اصلی را در اینجا. 154 00:07:09,390 --> 00:07:12,180 155 00:07:12,180 --> 00:07:13,430 چه چیز دیگری می رود در این کادر؟ 156 00:07:13,430 --> 00:07:16,000 157 00:07:16,000 --> 00:07:18,140 >> STUDENT: توابع است که با شما تماس. 158 00:07:18,140 --> 00:07:19,020 >> JASON HIRSCHHORN: توابع که ما تماس بگیرید. 159 00:07:19,020 --> 00:07:20,440 و از کجا که بروند؟ 160 00:07:20,440 --> 00:07:21,300 >> STUDENT: در پشته. 161 00:07:21,300 --> 00:07:22,380 >> JASON HIRSCHHORN: آنها رفتن در پشته. 162 00:07:22,380 --> 00:07:27,350 بنابراین ما قصد داریم به این چیزی که در اینجا پشته. 163 00:07:27,350 --> 00:07:31,880 و تا بالا، ما باید پشته. 164 00:07:31,880 --> 00:07:35,450 بنابراین حافظه است یک جعبه مثل این نیست. 165 00:07:35,450 --> 00:07:37,330 اما در واقع بسیار مشابه است. 166 00:07:37,330 --> 00:07:40,840 این برای رفتن به یک مقدار زیادی از جعبه های بیش از و بیش، بسته به اینکه چگونه بزرگ خود را 167 00:07:40,840 --> 00:07:43,730 کامپیوتر است و یا چگونه بزرگ حافظه خود را است. 168 00:07:43,730 --> 00:07:46,950 >> در نقل قول، نقل قول را تمام کردن "پایین" پشته است. 169 00:07:46,950 --> 00:07:50,880 و کارهای مختلف وجود دارد که در پشته بروید. 170 00:07:50,880 --> 00:07:53,840 و کسانی که در توابع وابسته شما در کد خود را داشته باشد. 171 00:07:53,840 --> 00:07:57,780 شما همیشه در یک تابع شما کد نام اصلی، پس همیشه وجود دارد 172 00:07:57,780 --> 00:08:00,480 بخش کردن در اینجا در پشته اختصاص داده شده به اصلی. 173 00:08:00,480 --> 00:08:03,980 >> این بخش در پشته در حال فریم پشته نامیده می شود. 174 00:08:03,980 --> 00:08:09,580 هنگامی که شما یک تابع دیگر تماس بگیرید، می گویند اصلی خواستار یک تابع جستجوی دودویی، 175 00:08:09,580 --> 00:08:11,075 ما قاب دیگر در پشته قرار داده است. 176 00:08:11,075 --> 00:08:13,830 177 00:08:13,830 --> 00:08:17,320 بیشتر به طور خاص، ما می رویم به اهدای یک تکه از حافظه ما 178 00:08:17,320 --> 00:08:22,960 کامپیوتر برای ذخیره باینری جستجوی محلی متغیرها و برای اجرای باینری 179 00:08:22,960 --> 00:08:24,150 کد جستجو. 180 00:08:24,150 --> 00:08:26,810 >> بنابراین ما جستجوی دودویی تماس بگیرید. 181 00:08:26,810 --> 00:08:30,440 182 00:08:30,440 --> 00:08:33,340 در این بخش از حافظه، ما قصد داریم برای ذخیره متغیرهای محلی آن است. 183 00:08:33,340 --> 00:08:35,270 ما قصد داریم برای ذخیره تماس های چون printf آن است. 184 00:08:35,270 --> 00:08:38,159 هر چه اتفاق می افتد، که تابع است رفتن به ذخیره می شود سمت راست وجود دارد. 185 00:08:38,159 --> 00:08:40,350 جستجو دودویی در حال رفتن به اجرا. 186 00:08:40,350 --> 00:08:42,210 این است رفتن به تکمیل اعدام. 187 00:08:42,210 --> 00:08:47,450 کلمه در C چه است که دلالت که یک تابع باید 188 00:08:47,450 --> 00:08:49,306 اعدام خود را کامل؟ 189 00:08:49,306 --> 00:08:50,040 >> STUDENT: بازگشت. 190 00:08:50,040 --> 00:08:50,870 >> JASON HIRSCHHORN: بازگشت. 191 00:08:50,870 --> 00:08:53,230 بنابراین هر زمان که شما یک دستور return را ببینید، به پایان می رسد تابع 192 00:08:53,230 --> 00:08:54,350 در هنگام برخورد که. 193 00:08:54,350 --> 00:08:56,740 جستجو پس باینری بازده آن رسید. 194 00:08:56,740 --> 00:09:01,360 این بخش از حافظه در اصل خواهد شد شود تا آزاد شده است. 195 00:09:01,360 --> 00:09:03,510 و اصلی بازگشت به اعدام خواهد شد. 196 00:09:03,510 --> 00:09:07,240 بنابراین اصلی توقف خواهد در هر کجا، تماس بود جستجوی دودویی، برخی از مقدار بازگشتی، 197 00:09:07,240 --> 00:09:08,700 و اعدام ادامه می دهند. 198 00:09:08,700 --> 00:09:10,840 این قاب پشته خواهد رفت. 199 00:09:10,840 --> 00:09:14,810 >> اگر ما یک تابع بازگشتی، با که یک تابع که خود را بیش خواستار است 200 00:09:14,810 --> 00:09:18,480 و بیش از این، ما ممکن است - می گویند ما انجام جستجوی دودویی به صورت بازگشتی. 201 00:09:18,480 --> 00:09:21,520 ما ممکن است باینری نسخه جستجو یک را دریافت کنید، جستجوی دودویی دو، جستجوی دودویی 202 00:09:21,520 --> 00:09:24,090 سه، جستجوی دودویی چهار، جستجوی دودویی پنج. 203 00:09:24,090 --> 00:09:27,950 و پس از آن در این جستجو نهایی باینری پنج خواهد به حالت پایه، و پشته آمار 204 00:09:27,950 --> 00:09:31,010 فریم به عقب خواهد رفت و اختتامیه نگه دارید ما تا برگشت به بخش اصلی دریافت کنید. 205 00:09:31,010 --> 00:09:32,530 ما می توانیم بیش از بازگشت در کمی بروید. 206 00:09:32,530 --> 00:09:35,530 اما همه این است که می گویند، اگر شما فراخوانی توابع چندگانه در یک زمان، 207 00:09:35,530 --> 00:09:39,250 آنجا خواهد بود چند پشته فریم در پشته. 208 00:09:39,250 --> 00:09:42,900 >> پشته، از سوی دیگر، تا در اینجا، برای توابع نیست، 209 00:09:42,900 --> 00:09:44,380 برای متغیرهای محلی. 210 00:09:44,380 --> 00:09:48,920 این برای صورت پویا اختصاص داده است متغیر. 211 00:09:48,920 --> 00:09:57,210 بنابراین این متغیر است که می تواند باشد مقدار دهی اولیه در هر دو اصلی یا 212 00:09:57,210 --> 00:09:58,640 تابع است که تماس های اصلی. 213 00:09:58,640 --> 00:10:00,790 در هر جای کد شما، آنها می توان مقداردهی اولیه. 214 00:10:00,790 --> 00:10:04,360 و برای مقداردهی اولیه به صورت پویا متغیر اختصاص داده است. 215 00:10:04,360 --> 00:10:06,970 چه تابع در C را استفاده می کنیم؟ 216 00:10:06,970 --> 00:10:07,600 >> STUDENT: Malloc. 217 00:10:07,600 --> 00:10:09,240 >> JASON HIRSCHHORN: Malloc. 218 00:10:09,240 --> 00:10:10,800 شما malloc تماس بگیرید. 219 00:10:10,800 --> 00:10:12,260 شما یک فضای حافظه دریافت کنید. 220 00:10:12,260 --> 00:10:15,020 و این فضای حافظه در پشته. 221 00:10:15,020 --> 00:10:18,840 و این فضای حافظه باقی می ماند وجود دارد تا با شما تماس رایگان. 222 00:10:18,840 --> 00:10:22,670 >> متغیرهای بنابراین به صورت پویا اختصاص داده شده در پشته برای تا زمانی که شما وجود داشته باشد 223 00:10:22,670 --> 00:10:25,250 می خواهید آنها را به وجود داشته باشد، و آنها نمی خواهند دور تا زمانی که شما به صراحت 224 00:10:25,250 --> 00:10:26,760 به آنها بگویید که برود. 225 00:10:26,760 --> 00:10:29,670 شما می توانید آنها را در یک تابع را ایجاد کنید. 226 00:10:29,670 --> 00:10:31,930 پشته است که تابع قاب دور خواهد رفت. 227 00:10:31,930 --> 00:10:35,490 اما این متغیر هنوز هم وجود خواهد داشت در پشته تا زمانی که آزاد شده است، 228 00:10:35,490 --> 00:10:39,650 به طور بالقوه توسط تابع است که به نام جستجوی دودویی یا هر چیز دیگری. 229 00:10:39,650 --> 00:10:42,580 >> بنابراین کسانی که متغیرهای پشته اقامت وجود دارد تا زمانی که شما می خواهید 230 00:10:42,580 --> 00:10:43,490 آنها را به ماندن وجود دارد. 231 00:10:43,490 --> 00:10:46,090 و آنها را در اینجا قرار دهید. 232 00:10:46,090 --> 00:10:47,450 و پس از آن یک بعدی می شود وجود دارد می شود. 233 00:10:47,450 --> 00:10:50,210 آنها را گرفتن است نه در، و آنها ماندن در آنجا تا زمانی که با شما تماس رایگان. 234 00:10:50,210 --> 00:10:52,870 >> و در اصل، پشته و به پشته، گرفتن به سوال مارکوس را، 235 00:10:52,870 --> 00:10:54,500 نسبت به یکدیگر رشد می کنند. 236 00:10:54,500 --> 00:10:57,730 و اگر آنها در یکی دیگر از اجرا، شما استفاده از تمام حافظه در خود 237 00:10:57,730 --> 00:11:01,330 کامپیوتر، و برنامه های خود را ترک خواهد کرد چرا که شما هر حافظه بیشتر ندارد 238 00:11:01,330 --> 00:11:02,420 در سمت چپ استفاده کنید. 239 00:11:02,420 --> 00:11:07,290 در بین آنها، وجود دارد همه چیز به طور بالقوه دیگر. 240 00:11:07,290 --> 00:11:10,980 اما برای از محدوده این البته، شما لازم نیست که در مورد آن نگران باشید. 241 00:11:10,980 --> 00:11:12,020 >> به طوری که پاسخ این بود به پرسش شما. 242 00:11:12,020 --> 00:11:13,520 نگرانش نباشید. 243 00:11:13,520 --> 00:11:15,550 اما این جواب بود. 244 00:11:15,550 --> 00:11:17,800 همه شما نیاز به دانستن است پشته و پشته - 245 00:11:17,800 --> 00:11:18,900 یکی در پایین شروع می شود. 246 00:11:18,900 --> 00:11:19,570 پشته می کند. 247 00:11:19,570 --> 00:11:20,790 پشته است وجود دارد. 248 00:11:20,790 --> 00:11:21,990 آنها به یک دیگر نزدیک تر خواهد شد. 249 00:11:21,990 --> 00:11:23,110 >> و اگر آنها را لمس، که یک مشکل است. 250 00:11:23,110 --> 00:11:24,500 شما از حافظه فرار. 251 00:11:24,500 --> 00:11:28,760 اما همچنین، علاوه بر دانستن که در آن آنها، چیزی است که در هر دو ذخیره 252 00:11:28,760 --> 00:11:30,512 پشته و پشته. 253 00:11:30,512 --> 00:11:31,410 کورتیس. 254 00:11:31,410 --> 00:11:33,570 >> CURTIS: هنگامی که آنها هم برخورد می کنند، که سرریز پشته است؟ 255 00:11:33,570 --> 00:11:35,670 >> JASON HIRSCHHORN: هنگامی که آنها هم برخورد می کنند، که سرریز پشته نیست. 256 00:11:35,670 --> 00:11:38,340 سرریز پشته یک منطقه متفاوت است که ما می توانیم بیش از اگر شما می خواهید. 257 00:11:38,340 --> 00:11:40,020 OK، ما به آن در یک بیت آمده است. 258 00:11:40,020 --> 00:11:42,730 >> STUDENT: کلمه نامیده می شود چیست زمانی که آنها ضربه یکدیگر، 259 00:11:42,730 --> 00:11:44,450 پشته و پشته؟ 260 00:11:44,450 --> 00:11:46,640 >> JASON HIRSCHHORN: در حال حاضر، در مورد نگران نباشید. 261 00:11:46,640 --> 00:11:47,750 فقط می دانم - 262 00:11:47,750 --> 00:11:50,530 من به این پرسش پاسخ بعد از کلاس. 263 00:11:50,530 --> 00:11:52,680 اگر آنها را به یکدیگر اجرا شود، شما فرار از حافظه، چرا که هیچ بیشتر وجود دارد 264 00:11:52,680 --> 00:11:53,330 فضا وجود دارد. 265 00:11:53,330 --> 00:11:55,450 >> STUDENT: با عرض پوزش، چه گسل SEG است؟ 266 00:11:55,450 --> 00:11:58,710 >> JASON HIRSCHHORN: A بخش گسل را می توان برای نام - 267 00:11:58,710 --> 00:12:02,240 آن بستگی دارد به همین دلیل به نام گسل SEG است. 268 00:12:02,240 --> 00:12:06,260 گاهی اوقات، سرریز پشته خود، آن را خواهید می گویند SEG به عنوان خطا در گسل. 269 00:12:06,260 --> 00:12:08,180 >> STUDENT: در مورد هرگاه یک متغیر تهی؟ 270 00:12:08,180 --> 00:12:10,040 آیا این گسل SEG؟ 271 00:12:10,040 --> 00:12:11,480 >> JASON HIRSCHHORN: غیر مرجع یک اشاره گر تهی - 272 00:12:11,480 --> 00:12:17,850 OK، بنابراین اگر شما یک اشاره گر است که شما را برابر تهی، اشاره گرها، به یاد بیاورید، 273 00:12:17,850 --> 00:12:20,270 آدرس های حافظه فروشگاه به عنوان ارزش های خود. 274 00:12:20,270 --> 00:12:23,660 و یک اشاره گر تهی است که در اصل ذخیره سازی 0، 0-TH 275 00:12:23,660 --> 00:12:26,670 آدرس در آن متغیر است. 276 00:12:26,670 --> 00:12:30,010 بنابراین 0x نمایش، 0، 0، 0، 0، و غیره. 277 00:12:30,010 --> 00:12:35,030 این آدرس 0 ام را در حافظه که نیست در تصویر ما، که وجود دارد 278 00:12:35,030 --> 00:12:38,800 در جایی، که محفوظ می باشد برای کامپیوتر است. 279 00:12:38,800 --> 00:12:40,130 ما مجاز به لمس. 280 00:12:40,130 --> 00:12:44,680 >> بنابراین، هنگامی که برنامه شما را اجرا، اگر چیزی در تلاش است تا به حافظه 281 00:12:44,680 --> 00:12:48,990 آدرس 0، از آن می داند که که یک مقدار خالی است. 282 00:12:48,990 --> 00:12:50,820 این می داند که هیچ چیزی باید وجود داشته باشد. 283 00:12:50,820 --> 00:12:53,420 بنابراین اگر شما سعی می کنید و استفاده از چیزی وجود دارد و درمان چیزی شبیه وجود دارد و یا 284 00:12:53,420 --> 00:12:58,355 تلاش برای رفتن به آن مکان، شما رفتن به گسل SEG یا خطا. 285 00:12:58,355 --> 00:13:00,520 آیا این پاسخ به سوال شما؟ 286 00:13:00,520 --> 00:13:03,170 >> و در حال حاضر ما به عقب بروید به سرریز پشته. 287 00:13:03,170 --> 00:13:09,560 چیزهایی که در پشته، که شما بچه ها قبل از دیده می شود، در - اجازه دهید نزدیک رسم 288 00:13:09,560 --> 00:13:11,966 از یک قاب پشته. 289 00:13:11,966 --> 00:13:15,050 همه می بینند که؟ 290 00:13:15,050 --> 00:13:16,650 بنابراین ما باید قاب پشته ما. 291 00:13:16,650 --> 00:13:23,260 ما در حال صرفه جویی در یک آرایه به عنوان یک محلی متغیر در این تابع. 292 00:13:23,260 --> 00:13:29,510 بنابراین می گویند آرایه ما پنج نقطه. 293 00:13:29,510 --> 00:13:33,230 هر پنج از آن ذخیره خواهد شد در قاب پشته. 294 00:13:33,230 --> 00:13:37,540 >> اگر ما شروع به فراتر از نوشتن مرزهای این آرایه - 295 00:13:37,540 --> 00:13:43,990 بنابراین اگر ما شروع به نوشتن به، اجازه دهید بگویم که 0. 296 00:13:43,990 --> 00:13:46,800 این پنج شاخص می باشد از آرایه است. 297 00:13:46,800 --> 00:13:50,980 اگر ما شروع به نوشتن به شاخص 5، که زمانی که ما ما ندارد 298 00:13:50,980 --> 00:13:55,900 مجموعه ای از اندازه 5، ما شروع به نوشتن به شاخص 6، 7، 8، 9، ما می توانیم یک پشته را دریافت کنید 299 00:13:55,900 --> 00:13:57,960 خطای سرریز. 300 00:13:57,960 --> 00:14:00,510 >> به طور کلی آن را نمی - 301 00:14:00,510 --> 00:14:04,910 شما احتمالا به دردسر خواهد شد اگر شما بیش از یک است. 302 00:14:04,910 --> 00:14:08,640 اما به طور کلی، شما را به دریافت کنید ترین مشکل اگر شما بیش از توسط بسیاری 303 00:14:08,640 --> 00:14:12,770 و شما بروید تا کنون بیش از است که شما ارسال بر روی آدرس بازگشت که 304 00:14:12,770 --> 00:14:16,080 تابع است، که در واقع پایین قاب پشته. 305 00:14:16,080 --> 00:14:16,520 >> از آنجا که، درست است؟ 306 00:14:16,520 --> 00:14:17,670 شما - در - متاسفم. 307 00:14:17,670 --> 00:14:18,550 نه "به دلیل راست." 308 00:14:18,550 --> 00:14:20,470 >> در قاب پشته، شما باید متغیرهای محلی خود را. 309 00:14:20,470 --> 00:14:27,090 در پایین پشته قاب آدرس برگشت است. 310 00:14:27,090 --> 00:14:28,790 که در آن تابع است می رود که آن را بیش از. 311 00:14:28,790 --> 00:14:33,750 و اگر شما که بازگشت بازنویسی آدرس، و سپس وقتی که این قاب پشته، 312 00:14:33,750 --> 00:14:36,680 زمانی که قصد دارید از طریق پشته قاب و اجرای هر خط، شما 313 00:14:36,680 --> 00:14:40,350 رفتن به آدرس بازگشت جدید خود را که وجود دارد به جای نوشته 314 00:14:40,350 --> 00:14:40,910 یکی از واقعی. 315 00:14:40,910 --> 00:14:45,050 و این که چگونه ما دیده ایم برخی از نقض امنیت 316 00:14:45,050 --> 00:14:46,780 می توانید با کامپیوتر اتفاق می افتد. 317 00:14:46,780 --> 00:14:52,760 >> سرریز پس پشته، در کوتاه مدت، زمانی است که شما در بخش بازنویسی در پشته 318 00:14:52,760 --> 00:14:55,440 شما قرار است برای استفاده، محلی متغیر شما قرار است برای استفاده، و 319 00:14:55,440 --> 00:14:58,070 به ویژه هنگامی که شما شروع به جای نوشتن چیز مهمی مانند 320 00:14:58,070 --> 00:14:59,100 آدرس بازگشت. 321 00:14:59,100 --> 00:15:00,090 و این که در آن شما یک خطا دریافت کنید. 322 00:15:00,090 --> 00:15:03,980 یا شاید حتی شما می توانید شروع حتی نوشتن را - 323 00:15:03,980 --> 00:15:05,370 می گویند جستجوی دودویی بود در بالا سمت راست اصلی. 324 00:15:05,370 --> 00:15:07,790 اگر شما overwrote زیادی، شما می تواند به اصلی ارسال. 325 00:15:07,790 --> 00:15:10,230 اما به طور کلی، شما یک خطا قبل پس از آن، چرا که کامپیوتر می داند 326 00:15:10,230 --> 00:15:12,270 شما در حال انجام چیزی است که شما نباید انجام شود. 327 00:15:12,270 --> 00:15:12,560 آره. 328 00:15:12,560 --> 00:15:13,910 >> STUDENT: تفاوت چیست بین سرریز پشته 329 00:15:13,910 --> 00:15:16,940 و یک سرریز بافر؟ 330 00:15:16,940 --> 00:15:19,420 >> JASON HIRSCHHORN: سرریز بافر نوع کلی تر است 331 00:15:19,420 --> 00:15:20,395 آنچه که من فقط توضیح داده ام. 332 00:15:20,395 --> 00:15:22,610 >> STUDENT: بنابراین سرریز پشته است نمونه ای از یک سرریز بافر. 333 00:15:22,610 --> 00:15:23,420 >> JASON HIRSCHHORN: دقیقا. 334 00:15:23,420 --> 00:15:28,700 این یک آرایه ما می توانیم به عنوان یک فکر است بافر، یک فضا برای همه چیز به وارد 335 00:15:28,700 --> 00:15:30,600 این یک سرریز پشته است. 336 00:15:30,600 --> 00:15:33,210 ما می تواند یک سرریز بافر پشته داشته باشد. 337 00:15:33,210 --> 00:15:36,870 اگر یک بافر، که وجود دارد، اغلب وجود دارد یک آرایه پشته است، و ما 338 00:15:36,870 --> 00:15:40,600 overwrote آن محدوده، پس از آن ما خواهد بود یک سرریز بافر پشته. 339 00:15:40,600 --> 00:15:44,870 >> و فراتر از محدوده این دوره، آنها تشخیص داده شده کمی متفاوت است. 340 00:15:44,870 --> 00:15:48,040 کامپایلر های ویژه راه تشخیص هر یک. 341 00:15:48,040 --> 00:15:50,660 اما سرریز بافر عمومی تر است نوع آنچه که من شرح داده شده، 342 00:15:50,660 --> 00:15:54,090 که یک سرریز پشته بود. 343 00:15:54,090 --> 00:15:56,240 آیا این پاسخ به سوال شما؟ 344 00:15:56,240 --> 00:15:57,910 شیرین. 345 00:15:57,910 --> 00:16:01,850 >> وجود هر گونه سؤال دیگر مربوط به پشته یا پشته؟ 346 00:16:01,850 --> 00:16:04,920 347 00:16:04,920 --> 00:16:05,510 آره. 348 00:16:05,510 --> 00:16:08,220 >> STUDENT: من می دانم که شما به رشته آزاد چرا که آنها در پشته است 349 00:16:08,220 --> 00:16:09,305 و شما نمی خواهید به نشت حافظه است. 350 00:16:09,305 --> 00:16:12,240 اما شما باید به آزاد متغیر های جهانی و چیزهای شبیه به آن؟ 351 00:16:12,240 --> 00:16:14,335 و یا آنها را به طور خودکار آزاد؟ 352 00:16:14,335 --> 00:16:15,700 >> JASON HIRSCHHORN: سوال خوب. 353 00:16:15,700 --> 00:16:22,340 بنابراین در CS50.H، ایجاد می کنیم این چیز برای شما یک رشته به نام. 354 00:16:22,340 --> 00:16:23,800 یک رشته واقعا چه؟ 355 00:16:23,800 --> 00:16:24,810 >> STUDENT: چهار ستاره. 356 00:16:24,810 --> 00:16:29,180 >> JASON HIRSCHHORN: A ستاره کاراکتر، یک اشاره گر به یک شخصیت، یک اشاره گر به 357 00:16:29,180 --> 00:16:30,650 آرایه ای از کاراکتر. 358 00:16:30,650 --> 00:16:32,210 این چیزی است که رشته است. 359 00:16:32,210 --> 00:16:36,050 بنابراین ما باید آن را آزاد، به دلیل getstring، که ما مورد استفاده زیادی - 360 00:16:36,050 --> 00:16:38,370 نام رشته برابر getstring - 361 00:16:38,370 --> 00:16:43,560 که mallocs برای ما برخی از حافظه در توده و سپس یک اشاره گر به را برمی گرداند 362 00:16:43,560 --> 00:16:47,230 اولین شخصیت است که رشته، یک ستاره کاراکتر. 363 00:16:47,230 --> 00:16:52,760 >> بنابراین ظاهرا، اگر شما نشده اند نوشتن رایگان بر روی هر یک از رشته های خود را 364 00:16:52,760 --> 00:16:55,600 که شما تا کنون نام کرده اید، است نشت برخی از حافظه. 365 00:16:55,600 --> 00:16:57,430 البته ما در مورد صحبت نمی آن، بنابراین هیچ کس را در بدست 366 00:16:57,430 --> 00:16:58,520 مشکل برای انجام آن. 367 00:16:58,520 --> 00:16:59,980 اما رفتن به جلو، بله. 368 00:16:59,980 --> 00:17:03,990 هنگامی که شما getstring تماس بگیرید، شما mallocing برخی از فضای در پشته. 369 00:17:03,990 --> 00:17:07,640 و اگر شما بعد تماس بگیرید رایگان در آن رشته، شما باید نشت حافظه. 370 00:17:07,640 --> 00:17:09,440 که پاسخ به سوال شما؟ 371 00:17:09,440 --> 00:17:10,606 >> آره 372 00:17:10,606 --> 00:17:15,020 >> STUDENT: بنابراین برای انجام این کار، استفاده ما حق آزاد قبل از بازگشت؟ 373 00:17:15,020 --> 00:17:18,510 مانند، در محدوده، من حدس می زنم اگر به ما می گویند، مانند، اعضای هیات تحریریه اصلی، در 374 00:17:18,510 --> 00:17:24,410 دامنه این کد که در آن آکولاد، درست قبل از - 375 00:17:24,410 --> 00:17:26,140 شما می دانید که در آن شما می خواهم معمولا بازگشت قرار داده است. 376 00:17:26,140 --> 00:17:27,950 آیا شما را آزاد قبل از آن؟ 377 00:17:27,950 --> 00:17:31,000 >> JASON HIRSCHHORN: بنابراین شما می توانید رایگان قرار داده هر کجا که شما می خواهید برای قرار دادن رایگان. 378 00:17:31,000 --> 00:17:33,810 از آنجا که این ها به صورت پویا اختصاص داده متغیر، زیرا آنها می توانند 379 00:17:33,810 --> 00:17:39,170 فراتر از محدوده ی خاصی زندگی می کنند تابع، اگر شما malloc در تماس 380 00:17:39,170 --> 00:17:44,140 عملکرد مجزا، به عنوان مثال، getstring، شما می توانید در اصلی تماس رایگان. 381 00:17:44,140 --> 00:17:46,050 شما لازم نیست به آن تماس بگیرید در تابع خاص 382 00:17:46,050 --> 00:17:47,570 که در آن malloc نامیده می شود. 383 00:17:47,570 --> 00:17:50,340 اما شما لازم به آن تماس بگیرید قبل از بازده اصلی. 384 00:17:50,340 --> 00:17:51,120 >> و این واقعا بستگی دارد. 385 00:17:51,120 --> 00:17:54,960 این که چرا شما malloced که بستگی دارد فضا در وهله اول. 386 00:17:54,960 --> 00:17:57,320 برخی از افراد تماس بگیرید آزاد بسیار به سرعت. 387 00:17:57,320 --> 00:17:59,220 بعضی از مردم نمی خواهد تا با تلفن رایگان پایان برنامه های خود. 388 00:17:59,220 --> 00:18:00,660 و آنها را از طریق رفتن و همه چیز آزاد است. 389 00:18:00,660 --> 00:18:03,597 این که چرا شما به نام malloc بستگی دارد. 390 00:18:03,597 --> 00:18:11,270 >> STUDENT: و آنچه را که به شما می گویند اگر شما استفاده از getstring به نام؟ 391 00:18:11,270 --> 00:18:13,320 شما می گویم آزاد چه؟ 392 00:18:13,320 --> 00:18:20,040 >> JASON HIRSCHHORN: پس از نحو به صورت رایگان به سادگی آزاد، پرانتز باز، بسته است 393 00:18:20,040 --> 00:18:22,130 پرانتز، و به نام اشاره گر. 394 00:18:22,130 --> 00:18:26,410 بنابراین اگر شما ارسال رشته نام و نام خانوادگی برابر getstring، شما نام را در اینجا. 395 00:18:26,410 --> 00:18:27,760 این نام اشاره گر است. 396 00:18:27,760 --> 00:18:30,570 و این می داند که آزاد است که حافظه است. 397 00:18:30,570 --> 00:18:33,920 >> STUDENT: بنابراین، هنگامی که آن را آزاد می گذارد که حافظه، اشاره گر هنوز هم به آن محل اشاره 398 00:18:33,920 --> 00:18:34,970 در حافظه؟ 399 00:18:34,970 --> 00:18:39,020 و یا اشاره گر نیز خالی است آدرس که آن را به اشاره می کند. 400 00:18:39,020 --> 00:18:40,290 >> JASON HIRSCHHORN: ما باید سعی کنید که. 401 00:18:40,290 --> 00:18:41,430 ما باید کدی که. 402 00:18:41,430 --> 00:18:43,880 اجازه دهید به عقب آمد که ما برای به دست آوردن برنامه نویسی، و اجازه دهید کدی که. 403 00:18:43,880 --> 00:18:46,000 و اگر شما می خواهید به شکل پاسخ به که، شما همچنین می توانید کد که 404 00:18:46,000 --> 00:18:46,690 در ضمن. 405 00:18:46,690 --> 00:18:49,100 اما این یک سوال بزرگ است. 406 00:18:49,100 --> 00:18:53,480 >> STUDENT: آیا می توان به چیزی رایگان بیش از حد به زودی؟ 407 00:18:53,480 --> 00:18:58,530 پس تو هنوز به آن نیاز دارید برای برنامه خود، و شما که فضای حافظه آزاد؟ 408 00:18:58,530 --> 00:18:59,200 >> JASON HIRSCHHORN: بله. 409 00:18:59,200 --> 00:19:03,020 این امکان وجود دارد، اگر شما چیزی رایگان و سپس شما از آن استفاده دوباره، به شما خواهد شد 410 00:19:03,020 --> 00:19:06,890 اجرا به خطا. 411 00:19:06,890 --> 00:19:10,810 اما این بر شما، به خاطر شما آزاد چیزی و سپس بعد از آن را به نام. 412 00:19:10,810 --> 00:19:13,940 به طوری که اشتباه یک برنامه نویس بود. 413 00:19:13,940 --> 00:19:14,780 اما بله. 414 00:19:14,780 --> 00:19:17,760 شما می توانید بنویسید. 415 00:19:17,760 --> 00:19:19,240 >> هر گونه سؤال بیشتر در مورد - 416 00:19:19,240 --> 00:19:19,760 بله. 417 00:19:19,760 --> 00:19:22,820 >> STUDENT: بنابراین اگر شما قرار است فقط آزاد آن به طور کلی قبل از 418 00:19:22,820 --> 00:19:25,490 برنامه به پایان می رسد، به این معنی است که اگر برنامه به پایان می رسد و شما آن را آزاد نیست، 419 00:19:25,490 --> 00:19:27,580 که حافظه هنوز هم به خود اختصاص داده است؟ 420 00:19:27,580 --> 00:19:31,330 >> JASON HIRSCHHORN: اگر برنامه خود را به پایان می رسد و شما را فراموش کرده ام به آزاد چیزی، پس از آن 421 00:19:31,330 --> 00:19:34,390 که حافظه در سراسر اختصاص داده شد طول عمر برنامه خود را. 422 00:19:34,390 --> 00:19:37,670 هنگامی که برنامه های خود را بسته به طور کامل، که حافظه است که نمی 423 00:19:37,670 --> 00:19:39,490 برای همیشه لطفا برای اقامت وجود دارد. 424 00:19:39,490 --> 00:19:42,080 کامپیوتر به اندازه کافی هوشمند به دانستن است که وقتی برنامه بسته می شود، آن 425 00:19:42,080 --> 00:19:46,440 باید از همه از حافظه خلاص شدن از شر است که با این برنامه همراه بود. 426 00:19:46,440 --> 00:19:51,240 >> با این حال، ابزار شما می توانید اجرا وجود دارد در یک برنامه برای شناسایی، زمانی که 427 00:19:51,240 --> 00:19:54,720 برنامه به پایان رسید، شما را فراموش کرده به مقداری از حافظه است. 428 00:19:54,720 --> 00:19:57,960 و برای مشکل بعدی خود را تنظیم که در آن شما با استفاده از malloc و با استفاده از 429 00:19:57,960 --> 00:20:02,610 اشاره گر، به شما خواهد شد در حال اجرا این برنامه در برنامه های خود را به دیدن، 430 00:20:02,610 --> 00:20:06,530 زمانی که سود عمده، تو داشته چیزهایی که unfreed شدند. 431 00:20:06,530 --> 00:20:09,130 >> به طوری که آنها در حال رفتن را به ماندن malloced برای همیشه لطفا برای در کامپیوتر شما. 432 00:20:09,130 --> 00:20:11,720 این امر می تواند بی فایده است، چون به سرعت، کامپیوتر 433 00:20:11,720 --> 00:20:12,960 را از حافظه اجرا شود. 434 00:20:12,960 --> 00:20:16,450 اما اگر آنها تا پایان خود را اجرا کنید برنامه ریزی و آنها را آزاد نیست و شما 435 00:20:16,450 --> 00:20:20,260 برنامه خارج می شود، که هنوز هم یک مشکل که این ابزار به شما کمک خواهد پرداخت. 436 00:20:20,260 --> 00:20:21,520 >> STUDENT: آیا این Valgrind؟ 437 00:20:21,520 --> 00:20:22,910 >> JASON HIRSCHHORN: این نام Valgrind. 438 00:20:22,910 --> 00:20:23,520 و شما خواهید بود - 439 00:20:23,520 --> 00:20:25,780 >> STUDENT: اما ما لازم نیست که می دانم که برای مسابقه، هر چند؟ 440 00:20:25,780 --> 00:20:27,600 منظور من، آن صحبت شد کمی در سخنرانی. 441 00:20:27,600 --> 00:20:33,600 >> JASON HIRSCHHORN: پس Valgrind نام آن ابزار است. 442 00:20:33,600 --> 00:20:37,180 دانستن اینکه چه چیزی می شود؟ است به اندازه کافی برای مسابقه. 443 00:20:37,180 --> 00:20:40,200 اما شما آن را هنوز در استفاده نشده خود را مشکل تنظیم چون ما نداشته است 444 00:20:40,200 --> 00:20:43,520 مجموعه ای مشکل است که به صراحت برخورد با malloc و یا شما با استفاده از malloc. 445 00:20:43,520 --> 00:20:45,330 بنابراین شما Valgrind هنوز استفاده می شود. 446 00:20:45,330 --> 00:20:47,760 اما شما آن را هر چه زودتر استفاده و نه بعد. 447 00:20:47,760 --> 00:20:48,710 >> STUDENT: آیا می توانید تکرار چه Valgrind است؟ 448 00:20:48,710 --> 00:20:49,190 >> JASON HIRSCHHORN: ببخشید؟ 449 00:20:49,190 --> 00:20:51,240 >> STUDENT: آیا می توانید تکرار آنچه هدف از Valgring است؟ 450 00:20:51,240 --> 00:20:53,100 >> JASON HIRSCHHORN: Valgrind نام است - 451 00:20:53,100 --> 00:20:59,890 مثل GDB شما کمک می کند اشکال زدایی برنامه های خود را، Valgrind کمک می کند تا شما از شکل اگر 452 00:20:59,890 --> 00:21:03,210 همه چیز آزاد نشده است هنگامی که برنامه های خود را می بندد. 453 00:21:03,210 --> 00:21:05,110 بنابراین شما آن را در برنامه های خود را اجرا کنید. 454 00:21:05,110 --> 00:21:09,230 و برنامه های خود را خارج می شود، و آن را خواهم گفت. برنامه های خود را به نام malloc این بسیاری از 455 00:21:09,230 --> 00:21:13,670 برپایه این چند بایت، و شما فقط آزاد به نام این چند بار. 456 00:21:13,670 --> 00:21:16,520 و به این ترتیب شما این کلمه در ادامه متن بسیاری از ترک بدون اینکه آزاد شده است. 457 00:21:16,520 --> 00:21:18,050 و یا آن را می گویند که همه چیز آزاد شده ام. 458 00:21:18,050 --> 00:21:19,070 کار خوب. 459 00:21:19,070 --> 00:21:19,480 >> STUDENT: OK. 460 00:21:19,480 --> 00:21:21,060 و آن را Valgring به نام؟ 461 00:21:21,060 --> 00:21:24,940 >> JASON HIRSCHHORN: V-A-L-G-R-I-N-D. 462 00:21:24,940 --> 00:21:25,970 >> STUDENT: A سوال در مورد اشاره گر. 463 00:21:25,970 --> 00:21:30,080 بنابراین شما به N ستاره X چیزی برابر. 464 00:21:30,080 --> 00:21:33,330 برابر است، هر آنچه که شما در حال قرار دادن وجود دارد، این است که آنچه را که در داخل قرار داده 465 00:21:33,330 --> 00:21:36,120 آنچه X با اشاره به، و یا اشاره گر از X؟ 466 00:21:36,120 --> 00:21:37,690 >> JASON HIRSCHHORN: آیا می توانید سوال تکرار؟ 467 00:21:37,690 --> 00:21:39,340 آیا ما می توانیم آن را رسم در حالی که شما آن را می گویند؟ 468 00:21:39,340 --> 00:21:42,710 >> STUDENT: در مسابقه، در واقع، یکی از شما به ما ارسال می شود، آن را مانند، کاراکتر بود 469 00:21:42,710 --> 00:21:46,520 حقیقت این ستاره برابر است با سنگ CS50، درست است؟ 470 00:21:46,520 --> 00:21:52,190 بنابراین معنا است که که سنگ CS50 چیزی است که حقیقت این است با اشاره به؟ 471 00:21:52,190 --> 00:21:55,810 >> JASON HIRSCHHORN: بنابراین شما در حال صحبت کردن در مورد یک ستاره کاراکتر در یک رشته، چگونه 472 00:21:55,810 --> 00:21:56,460 که کار می کند؟ 473 00:21:56,460 --> 00:21:56,890 آره. 474 00:21:56,890 --> 00:21:57,700 OK. 475 00:21:57,700 --> 00:21:59,140 بیایید این رسم بیش از اینجا. 476 00:21:59,140 --> 00:22:07,100 >> [SIDE گفتگو] 477 00:22:07,100 --> 00:22:11,130 >> JASON HIRSCHHORN: بنابراین این متغیر در حال رفتن به از نوع ستاره کاراکتر باشد. 478 00:22:11,130 --> 00:22:14,580 یک متغیر چقدر است ستاره نوع char؟ 479 00:22:14,580 --> 00:22:15,510 چگونه بسیاری از بایت؟ 480 00:22:15,510 --> 00:22:16,450 >> دانش آموزان: چهار. 481 00:22:16,450 --> 00:22:18,210 >> JASON HIRSCHHORN: این چهار بایت است. 482 00:22:18,210 --> 00:22:21,420 یک متغیر چگونه بسیاری از حقوق است ستاره نوع int؟ 483 00:22:21,420 --> 00:22:22,210 >> دانش آموزان: چهار. 484 00:22:22,210 --> 00:22:24,910 >> JASON HIRSCHHORN: چهار بایت. 485 00:22:24,910 --> 00:22:28,280 اگر یک اشاره گر است، سپس آن را همیشه چهار بایت، چون اشاره گر، خود را 486 00:22:28,280 --> 00:22:30,070 ارزش یک آدرس حافظه است. 487 00:22:30,070 --> 00:22:35,160 و آدرس های حافظه در CS50 دستگاه چهار بایت طول دارد. 488 00:22:35,160 --> 00:22:42,900 بنابراین، هنگامی که ما getstring، و یا وقتی ما تماس بگیرید مثلا stringname برابر، و پس از آن در 489 00:22:42,900 --> 00:22:46,140 دو علامت قرار داده یک رشته، ما در حال قرار دادن - 490 00:22:46,140 --> 00:22:46,920 خوب، که کمی متفاوت است. 491 00:22:46,920 --> 00:22:48,630 ما را getstring به عنوان مثال. 492 00:22:48,630 --> 00:22:52,150 یا ستاره کاراکتر چیزی برابر با رشته. 493 00:22:52,150 --> 00:22:54,360 با عرض پوزش، من مثال را که شما خوانده شده؟ 494 00:22:54,360 --> 00:22:57,590 >> STUDENT: کاراکتر ستاره حقیقت برابر است با "سنگ cs50" در نقل قول ها دو برابر شود. 495 00:22:57,590 --> 00:23:02,260 >> JASON HIRSCHHORN: پس این ستاره، این ما این متغیر x برای تماس ما 496 00:23:02,260 --> 00:23:04,060 اهداف عمومی. 497 00:23:04,060 --> 00:23:05,970 ما یک متغیر به نام X ایجاد کرده اید. 498 00:23:05,970 --> 00:23:07,610 این نوع ستاره کاراکتر است. 499 00:23:07,610 --> 00:23:10,950 این یک اشاره گر به یک سری است از شخصیت های. 500 00:23:10,950 --> 00:23:12,200 بنابراین در اینجا - 501 00:23:12,200 --> 00:23:23,710 502 00:23:23,710 --> 00:23:25,890 >> پس این است که چگونه این امر کار در حافظه است. 503 00:23:25,890 --> 00:23:27,410 این یک آدرس حافظه ذخیره کنند. 504 00:23:27,410 --> 00:23:31,770 این که آدرس حافظه ذخیره اولین کاراکتر در آرایه. 505 00:23:31,770 --> 00:23:33,830 و پس از آن زمانی که شما به دنبال اشاره گر، شما را 506 00:23:33,830 --> 00:23:35,200 دریافت اولین کاراکتر. 507 00:23:35,200 --> 00:23:38,780 >> و اگر شما در حال خواندن این چیزی مانند یک رشته، کامپیوتر شما هوشمند است 508 00:23:38,780 --> 00:23:42,930 به اندازه کافی می دانم، به عنوان خوانده شده کل این چیز تا زمانی که آن را به یک واکنش 0 می شود. 509 00:23:42,930 --> 00:23:45,530 اما اگر شما آن را می خوانید یک شخصیت در یک زمان، پس شما تکرار از طریق 510 00:23:45,530 --> 00:23:49,910 این رشته، و سپس شما فقط به عنوان خوانده شده شخصیت در یک زمان تا زمانی که شما برای به دست آوردن 511 00:23:49,910 --> 00:23:50,850 بک اسلش 0. 512 00:23:50,850 --> 00:23:52,335 که ممکن است پاسخ دهد شما سوال، هر چند. 513 00:23:52,335 --> 00:23:55,610 >> STUDENT: آره، اما شما ندارد malloced که فضا 514 00:23:55,610 --> 00:23:58,400 در عین حال که برای اشاره گر. 515 00:23:58,400 --> 00:24:02,510 >> JASON HIRSCHHORN: پس من کاملا مطمئن نیستم دقیقا همان چیزی است که شما به دنبال در، 516 00:24:02,510 --> 00:24:03,640 چون من که مسابقه را ندارد. 517 00:24:03,640 --> 00:24:06,370 که قرار بود مفید منابع از TF دیگر. 518 00:24:06,370 --> 00:24:11,380 اگر شما در حال ایجاد یک رشته در پشته و یا به عنوان یک متغیر محلی، آن را خواهید 519 00:24:11,380 --> 00:24:16,920 فقط مجموعه ای از اتهامات و نه می شود به طور کلی یک ستاره کاراکتر با اشاره به 520 00:24:16,920 --> 00:24:18,600 یکی دیگر از رشته. 521 00:24:18,600 --> 00:24:20,550 اما من نمی دانم. 522 00:24:20,550 --> 00:24:25,065 که می تواند یک اشاره گر به دیگری رشته در پشته نیز هست. 523 00:24:25,065 --> 00:24:27,240 آره. 524 00:24:27,240 --> 00:24:31,116 >> STUDENT: من می دانم که شما نیاز دارید تخصیص حافظه اگر اشاره گر است 525 00:24:31,116 --> 00:24:33,360 گرفتن در داخل اعلام کرد از تابع دیگر. 526 00:24:33,360 --> 00:24:36,740 آیا شما نیاز به انجام همان چیزی که اگر آن را در داخل از اصلی اعلام کرد، 527 00:24:36,740 --> 00:24:39,570 شما با استفاده از آن را در داخل از اصلی؟ 528 00:24:39,570 --> 00:24:43,590 >> JASON HIRSCHHORN: بله. 529 00:24:43,590 --> 00:24:46,670 شما می توانید یک اشاره گر به هر گونه اعلام آدرس حافظه در حافظه است. 530 00:24:46,670 --> 00:24:51,440 این می تواند آدرس حافظه محلی متغیر، هر چند اغلب، 531 00:24:51,440 --> 00:24:55,760 مردم آدرس های حافظه تعریف نشده به متغیرهای محلی به خاطر آنها به 532 00:24:55,760 --> 00:24:59,890 دور یک بار که تابع برمی گرداند، که همین دلیل است که ما به طور کلی malloc چیز. 533 00:24:59,890 --> 00:25:04,630 اما بله، شما می توانید یک اشاره گر اعلام به متغیر محلی دیگر. 534 00:25:04,630 --> 00:25:06,360 این فقط به طور کلی انجام می شود. 535 00:25:06,360 --> 00:25:09,480 اما من می توانید نگاهی را که چیزی که خاص بعد از کلاس. 536 00:25:09,480 --> 00:25:10,650 آره. 537 00:25:10,650 --> 00:25:12,350 >> STUDENT: من فکر می کنم این است مرتب سازی بر از آنچه که خواسته شده. 538 00:25:12,350 --> 00:25:16,930 به نظر می رسد عجیب و غریب به مقدار دهی اولیه می شود یک اشاره گر نه به عنوان 539 00:25:16,930 --> 00:25:20,760 آدرس، اما آنچه به نظر می رسد مثل یک ارزش. 540 00:25:20,760 --> 00:25:25,970 به نظر می رسد مانند CS50 است آنچه در داخل چیزی که به اشاره و 541 00:25:25,970 --> 00:25:28,820 نه آدرس واقعی، درست است؟ 542 00:25:28,820 --> 00:25:30,520 >> JASON HIRSCHHORN: پس این چنین نیست، هر چند. 543 00:25:30,520 --> 00:25:32,470 این چیزی است که اتفاق می افتد نیست. 544 00:25:32,470 --> 00:25:35,910 هنگامی که شما یک ستاره کاراکتر اعلام، آن است که یک آدرس حافظه است. 545 00:25:35,910 --> 00:25:38,860 اشاره گرها تمام آدرس های حافظه اشاره به چیز دیگری. 546 00:25:38,860 --> 00:25:41,480 این چیزی است که چیز دیگری می تواند در است پشته، اما تقریبا همیشه در است 547 00:25:41,480 --> 00:25:43,440 توده در راه خواهیم دید آن استفاده می شود. 548 00:25:43,440 --> 00:25:46,860 549 00:25:46,860 --> 00:25:53,500 اما stringname برابر با دو اعلان "getstring،" ما می توانید ببینید که و ما 550 00:25:53,500 --> 00:25:55,010 می توانید از طریق آن نگاه کنید و کد آن. 551 00:25:55,010 --> 00:26:01,190 getstring رشته است که در ذخیره نشده که متغیر، یا هر رشته 552 00:26:01,190 --> 00:26:04,580 نام است که در آن ذخیره نشده متغیر، چرا که نمی توان 553 00:26:04,580 --> 00:26:06,070 اشاره گر کار می کنند. 554 00:26:06,070 --> 00:26:06,770 آیا این را حس؟ 555 00:26:06,770 --> 00:26:07,170 >> STUDENT: آره. 556 00:26:07,170 --> 00:26:08,570 >> JASON HIRSCHHORN: OK. 557 00:26:08,570 --> 00:26:11,690 امیدوارم، که نبود گیج کننده است به هر کسی. 558 00:26:11,690 --> 00:26:15,732 اما اگر آن بود، ما می توانیم در آن را دوباره نگاه کنید در یک بیت، زیرا ما در واقع رفتن 559 00:26:15,732 --> 00:26:19,240 کد چیزی است که امیدوارم خواهد شد کار با رشته ها و به شما کمک کند احساس 560 00:26:19,240 --> 00:26:22,170 راحت تر با آنها. 561 00:26:22,170 --> 00:26:24,869 >> هر گونه سؤال دیگر مربوط به این موضوعات و یا موضوعات دیگر که 562 00:26:24,869 --> 00:26:26,119 من را به بالا قرار داده است؟ 563 00:26:26,119 --> 00:26:32,280 564 00:26:32,280 --> 00:26:34,840 و - 565 00:26:34,840 --> 00:26:36,310 در حال حاضر. 566 00:26:36,310 --> 00:26:37,630 بله، آلدن. 567 00:26:37,630 --> 00:26:39,860 >> آلدن: پس این است که کاملا نامربوط، اما می تواند ما فقط رفتن را 568 00:26:39,860 --> 00:26:42,760 واقعا به سرعت به آنچه که ما نیاز به دانستن در مورد تفاوت بین 32 و 569 00:26:42,760 --> 00:26:46,345 ماشین های 64 بیتی؟ 570 00:26:46,345 --> 00:26:47,740 >> JASON HIRSCHHORN: بله. 571 00:26:47,740 --> 00:26:52,111 بنابراین 32 بیت است که چگونه بسیاری از بایت؟ 572 00:26:52,111 --> 00:26:53,060 >> آلدن: این چهار بایت است. 573 00:26:53,060 --> 00:26:54,360 >> JASON HIRSCHHORN: این چهار بایت است. 574 00:26:54,360 --> 00:26:58,420 و 64 بیت است که چگونه بسیاری از بایت؟ 575 00:26:58,420 --> 00:26:59,112 >> STUDENT: هشت. 576 00:26:59,112 --> 00:27:00,610 >> JASON HIRSCHHORN: هشت بایت است. 577 00:27:00,610 --> 00:27:03,980 بنابراین دوباره، هشت بیت یک بایت است. 578 00:27:03,980 --> 00:27:08,340 لوازم CS50 شما یک ماشین 32 بیتی. 579 00:27:08,340 --> 00:27:13,650 بنابراین آدرس های حافظه چهار بایت طول دارد. 580 00:27:13,650 --> 00:27:17,460 2 وجود دارد به 32 آدرس های حافظه است. 581 00:27:17,460 --> 00:27:21,310 0 تا 2 به 32 منهای 1. 582 00:27:21,310 --> 00:27:27,630 و من مثبت نیست، اما این احتمالا دامنه آنچه شما نیاز دارید 583 00:27:27,630 --> 00:27:35,230 می دانم که برای یک ماشین 32 بیتی، که حافظه آدرس هستند، دوباره، چهار بایت، 584 00:27:35,230 --> 00:27:39,620 و است که مقدار حداکثر است از آدرس حافظه است. 585 00:27:39,620 --> 00:27:41,680 >> همچنین، انواع داده ها - 586 00:27:41,680 --> 00:27:45,020 این ممکن است چیزی به عنوان خوب است که ارزش ندارد. 587 00:27:45,020 --> 00:27:49,610 به اندازه یک نوع داده ها بستگی دارد ماشین شما کار با. 588 00:27:49,610 --> 00:27:56,760 بنابراین یک کاراکتر، یک شخصیت واحد، این است که چگونه بسیاری از بایت در دستگاه CS50 ما؟ 589 00:27:56,760 --> 00:27:57,980 یک بایت. 590 00:27:57,980 --> 00:28:02,310 و این در واقع یک بایت به عنوان به خوبی بر روی یک ماشین 64 بیتی. 591 00:28:02,310 --> 00:28:05,920 >> و بسیاری از انواع داده ها به همان تعداد از هر دو ماشین بایت. 592 00:28:05,920 --> 00:28:11,620 اما برخی از انواع داده های مختلف خواهد بود در هر دو ماشین. 593 00:28:11,620 --> 00:28:14,590 به طوری که به طور بالقوه خواهد بود تنها چیزی که شما باید بدانید. 594 00:28:14,590 --> 00:28:16,710 >> اما حتی از آن، من فکر می کنم، است فراتر از مرزهای - 595 00:28:16,710 --> 00:28:20,990 من تقریبا مثبت هستم، اگر شما نگاه به عقب در آزمونها قدیمی، آن را می گوید، برای فرض 596 00:28:20,990 --> 00:28:24,090 برنامه نویسی مشکلات شما با استفاده از یک ماشین 32 بیتی. 597 00:28:24,090 --> 00:28:26,620 598 00:28:26,620 --> 00:28:30,620 اما وجود دارد، به همراه است که در مورد علاقه وجود دارد 599 00:28:30,620 --> 00:28:35,920 انواع داده ها که مثل هم هستند اندازه در تمام دستگاه. 600 00:28:35,920 --> 00:28:42,670 >> اگر شما چیزی مانند دیده می شود uint32_t، شما ممکن است یا ممکن 601 00:28:42,670 --> 00:28:43,260 نه دیده اند که. 602 00:28:43,260 --> 00:28:44,290 این یک نوع داده است. 603 00:28:44,290 --> 00:28:47,570 که می گوید، می شود 32 بیت بدون توجه به چه دستگاه این است. 604 00:28:47,570 --> 00:28:50,350 بنابراین، هنگامی که مردم در حال نوشتن قابل حمل کد، آنها احتمالا نوع داده int استفاده کنید. 605 00:28:50,350 --> 00:28:53,260 در عوض، آنها را با استفاده از این اطلاعات دیگر انواع که آنها می دانند خواهد بود 606 00:28:53,260 --> 00:28:54,780 اندازه بر روی هر دستگاه واحد. 607 00:28:54,780 --> 00:28:58,080 608 00:28:58,080 --> 00:28:58,250 Madhu. 609 00:28:58,250 --> 00:29:00,150 >> MADHU: من یک سوال در مورد حال فرایند تدوین. 610 00:29:00,150 --> 00:29:04,110 بنابراین اگر شما در حال نوشتن یک برنامه است که با استفاده از کتابخانه شبیه به CS50 یا چیزی 611 00:29:04,110 --> 00:29:06,840 مانند آن، من می دانم که که کتابخانه به، در برخی از نقطه، لازم است 612 00:29:06,840 --> 00:29:08,590 وارد شده و مرتبط شوید 613 00:29:08,590 --> 00:29:13,380 اما چه مقدار از آن در طول اتفاق می افتد تلفیقی از برنامه های خود را؟ 614 00:29:13,380 --> 00:29:15,880 چه بخشی از این پروسه کتابخانه رخ می دهد زمانی که شما 615 00:29:15,880 --> 00:29:18,560 تدوین برنامه های خود را؟ 616 00:29:18,560 --> 00:29:24,020 >> JASON HIRSCHHORN: بنابراین اجازه دهید بیش از به طور کلی مراحل این فرایند است. 617 00:29:24,020 --> 00:29:26,280 شما ارسال فایل C خود را. 618 00:29:26,280 --> 00:29:33,530 در فایل C خود را، شما # شامل شما کتابخانه هدر، به عنوان مثال، cs50.h. 619 00:29:33,530 --> 00:29:39,480 چه که تیز عبارتند از خط انجام دهید تا برنامه های خود را؟ 620 00:29:39,480 --> 00:29:40,525 Akchar. 621 00:29:40,525 --> 00:29:43,350 >> AKCHAR: این اضافه می کند نمونه های اولیه از توابع از هدر 622 00:29:43,350 --> 00:29:45,120 فایل های موجود در کتابخانه ها. 623 00:29:45,120 --> 00:29:45,600 >> JASON HIRSCHHORN: دقیقا. 624 00:29:45,600 --> 00:29:49,870 این می افزاید: کسانی که نمونه های اولیه تابع به کد شما. 625 00:29:49,870 --> 00:29:55,230 بنابراین، هنگامی که کد خود را در وارد در مراحل اولیه، کامپایلر می داند 626 00:29:55,230 --> 00:29:59,250 که این توابع واقعا وجود داشته باشد، و است که در جایی که تعریف شده است. 627 00:29:59,250 --> 00:30:02,460 فایل های. ساعت را شامل نمی شود تعاریف برای این توابع و یا چگونه 628 00:30:02,460 --> 00:30:03,950 آنها در واقع کار می کنند. 629 00:30:03,950 --> 00:30:07,960 Cs50.h فقط شامل چیزی است که می گوید: getstring یک چیز واقعی است که 630 00:30:07,960 --> 00:30:09,270 می تواند رخ دهد. 631 00:30:09,270 --> 00:30:14,240 و standardio.h می گوید: چون printf است یک چیز واقعی است که می تواند رخ دهد. 632 00:30:14,240 --> 00:30:23,190 >> بنابراین زبان C خود را با این. هدر فایل می شود به برخی از تبدیل 633 00:30:23,190 --> 00:30:27,750 کد قابل خواندن با ماشین، که در نهایت می شود به دودویی تبدیل 634 00:30:27,750 --> 00:30:30,030 کد، 0 و 1. 635 00:30:30,030 --> 00:30:33,590 و این کد را که در نهایت اجرا می شود. 636 00:30:33,590 --> 00:30:38,550 -l خط cs50 - به عنوان مثال، هنگامی که شما در حال نوشتن صدای جرنگ جرنگ - 637 00:30:38,550 --> 00:30:41,830 و سپس شما عبارتند از-L cs50، شما تایپ می کنید که سایت شوید. 638 00:30:41,830 --> 00:30:42,180 و شما می بینید که. 639 00:30:42,180 --> 00:30:43,890 هنگامی که شما ارسال می کند، نظر شما این خط رو در اینجا مشاهده کنید. 640 00:30:43,890 --> 00:30:47,740 و خواهیم دید که در یک ثانیه در هنگام ما کد و یا بعد از آن زمانی که ما کد. 641 00:30:47,740 --> 00:30:50,390 >> اما که-L خط cs50 کاری کمی متفاوت از 642 00:30:50,390 --> 00:30:52,440 # شامل cs50.h. 643 00:30:52,440 --> 00:30:56,300 خط است که-L cs50 چکار می کند؟ 644 00:30:56,300 --> 00:30:56,820 AVI؟ 645 00:30:56,820 --> 00:31:00,310 >> AVI: من می خواهم بگویم که این لینک کتابخانه به تابع 646 00:31:00,310 --> 00:31:02,710 تماس، مانند فایل های ای. 647 00:31:02,710 --> 00:31:08,200 >> JASON HIRSCHHORN: بنابراین بسیار نزدیک، اگر نقطه در تاریخ نیست. 648 00:31:08,200 --> 00:31:16,220 -l cs50 فایل باینری طول می کشد و این ادغام با فایل باینری است. 649 00:31:16,220 --> 00:31:21,410 بنابراین cs50.h، هیچ نقطه در تبدیل وجود دارد cs50.h از زبان C به باینری هر 650 00:31:21,410 --> 00:31:23,130 زمان واحد از آن استفاده می شود. 651 00:31:23,130 --> 00:31:26,650 این احمقانه است، چرا که یک مقدار زیادی از اتلاف وقت. 652 00:31:26,650 --> 00:31:30,420 پس از آن در حال حاضر وارد شده است و تبدیل به یک فایل اجرایی. 653 00:31:30,420 --> 00:31:35,430 و در حال حاضر آن است که رفتن به در هم ادغام می شود با فایل خود را در پایان. 654 00:31:35,430 --> 00:31:38,370 بنابراین کسانی که 1 و 0 است در حال رفتن به ادغام با آنهایی که خود را 655 00:31:38,370 --> 00:31:39,150 و 0 را در پایان. 656 00:31:39,150 --> 00:31:43,670 بنابراین در حال حاضر شما در واقع می خواهیم واقعی داشته باشد 1 و 0 است که تعریف getstring، 657 00:31:43,670 --> 00:31:47,890 به عنوان مثال، کار می کند، و یا چگونه چون printf، به عنوان مثال، کار می کند. 658 00:31:47,890 --> 00:31:52,750 >> و برای اطلاعات بیشتر، وجود دارد کامپایلر های کوتاه است که مقابله می دهد که 659 00:31:52,750 --> 00:31:55,410 شما باید بررسی کنید که می رود از طریق این مراحل. 660 00:31:55,410 --> 00:31:56,050 اما - 661 00:31:56,050 --> 00:31:56,560 بله. 662 00:31:56,560 --> 00:32:01,700 >> STUDENT: آیا آنها همیشه در فایل های ای. زمانی که آنها در قالب کتابخانه هستید، 663 00:32:01,700 --> 00:32:06,764 آماده به در هم ادغام می شود، مرتبط است - مانند آنها در کد باینری هستید؟ 664 00:32:06,764 --> 00:32:07,600 >> JASON HIRSCHHORN: OK. 665 00:32:07,600 --> 00:32:08,420 چه - 666 00:32:08,420 --> 00:32:11,780 >> STUDENT: است که همیشه و در مورد کتابخانه زمانی که شما آنها را پیوند دارند؟ 667 00:32:11,780 --> 00:32:12,500 >> JASON HIRSCHHORN: بله. 668 00:32:12,500 --> 00:32:17,300 بنابراین است. فایل، که خواهد شد وجود دارد کد ماشین، که آن هم خواهد بود 669 00:32:17,300 --> 00:32:17,975 مرموز به شما. 670 00:32:17,975 --> 00:32:19,410 شما لازم نیست که در مورد آن نگران باشید. 671 00:32:19,410 --> 00:32:24,930 اما به طور کلی، بله، آنها در. ای آماده رفتن فایل ها. 672 00:32:24,930 --> 00:32:27,170 >> STUDENT: بنابراین، هنگامی که شما به کشتی یک کتابخانه، آیا شما فقط کشتی 673 00:32:27,170 --> 00:32:28,880 است. ساعت و. ای؟ 674 00:32:28,880 --> 00:32:32,210 شما ج یا. ها کشتی نیست. 675 00:32:32,210 --> 00:32:33,070 >> JASON HIRSCHHORN: پس - 676 00:32:33,070 --> 00:32:36,260 و این است که در این کوتاه به عنوان خوب، اگر به نظر می رسد این اطلاعات به آینده شود 677 00:32:36,260 --> 00:32:36,700 کمی به سرعت. 678 00:32:36,700 --> 00:32:39,870 اما کوتاه در کامپایلرها مذاکرات در مورد این عنوان است. 679 00:32:39,870 --> 00:32:43,290 هنگامی که شما به کشتی یک کتابخانه، اگر شما کشتی است. ساعت، فایل هدر، کسانی که 680 00:32:43,290 --> 00:32:46,290 نمونه های اولیه تابع، و 1 و 0 است، که همه شما نیاز به دادن است. 681 00:32:46,290 --> 00:32:50,640 شما لازم نیست که به چگونگی تابع کار می کند، فایل ج. 682 00:32:50,640 --> 00:32:56,360 از آنجا که این نقطه از انتزاع، و یا اشاره رابط های برنامه کاربردی، نقطه در این SPL، 683 00:32:56,360 --> 00:32:59,650 کتابخانه دانشگاه استانفورد قابل حمل، آن را را برای شما به نگرانی در مورد که چگونه جدید 684 00:32:59,650 --> 00:33:04,220 GRect کار می کند، و یا چگونه حرکت می کند کار می کند، و یا چگونه اضافه کار می کند. 685 00:33:04,220 --> 00:33:06,520 همه شما باید بدانید که اضافه یک تابع که شما می توانید است 686 00:33:06,520 --> 00:33:08,880 استفاده کنید، و این کار. 687 00:33:08,880 --> 00:33:12,760 پس شما واقعا لازم نیست که می دانم که چگونه آن را در C. شما نوشته شده است فقط نیاز به 688 00:33:12,760 --> 00:33:15,460 می دانید، در اینجا توابع هستند، چه آنها انجام، و در اینجا در 1 و 0 هستند 689 00:33:15,460 --> 00:33:18,870 زمانی که شما واقعا می خواهید از آنها استفاده کنید. 690 00:33:18,870 --> 00:33:19,530 >> دانلود. 691 00:33:19,530 --> 00:33:26,980 هر گونه سؤال بیشتر در مورد کامپایلرها و یا موضوعات دیگر در هیئت مدیره؟ 692 00:33:26,980 --> 00:33:30,300 >> STUDENT: من یک سوال از پیاده سازی توابع بازگشتی. 693 00:33:30,300 --> 00:33:31,170 سوال در مورد بازگشت. 694 00:33:31,170 --> 00:33:33,030 من یک احساس است که می آمد تا به حال. 695 00:33:33,030 --> 00:33:38,310 بنابراین اجازه دهید به سرعت از طریق رفتن بازگشت با خاص 696 00:33:38,310 --> 00:33:40,690 به عنوان مثال، یک تابع فاکتوریل. 697 00:33:40,690 --> 00:33:44,920 از آنجا که این یک مثال است که اغلب می آید و یا استفاده شده است 698 00:33:44,920 --> 00:33:46,170 برای نشان دادن بازگشت. 699 00:33:46,170 --> 00:33:52,390 700 00:33:52,390 --> 00:33:56,410 >> پس "4" به عنوان 4 فاکتوریل به عنوان خوانده شده. 701 00:33:56,410 --> 00:33:59,120 و چه 4 فاکتوریل چیست؟ 702 00:33:59,120 --> 00:34:00,696 چه کاری انجام دهید؟ 703 00:34:00,696 --> 00:34:02,235 چگونه می توانم شما را محاسبه 4 فاکتوریل؟ 704 00:34:02,235 --> 00:34:05,250 705 00:34:05,250 --> 00:34:07,960 4 بار 3 بار 2 بار 1. 706 00:34:07,960 --> 00:34:11,889 >> بنابراین روش دیگری برای ارسال 4 فاکتوریل است برای نوشتن این. 707 00:34:11,889 --> 00:34:16,780 708 00:34:16,780 --> 00:34:19,022 4 بار در 3 فاکتوریل. 709 00:34:19,022 --> 00:34:22,080 از آنجا که 3 فاکتوریل است 3 بار در 2 زمان 1. 710 00:34:22,080 --> 00:34:27,580 بنابراین 4 بار در 3 فاکتوریل 4 است بار 3 بار 2 بار 1. 711 00:34:27,580 --> 00:34:32,679 به همین دلیل است فاکتوریل بزرگ است نامزد برای بازگشت، به خاطر آن 712 00:34:32,679 --> 00:34:36,630 روشن است که چیزی است که وجود دارد اتفاق می افتد و بیش از بیش و بیش در 713 00:34:36,630 --> 00:34:39,820 تعداد کمتری از چیزهایی که تا شما به پایان برسد. 714 00:34:39,820 --> 00:34:42,570 هنگامی که شما در رسیدن به 1، 1 فاکتوریل 1 است. 715 00:34:42,570 --> 00:34:43,719 شما نمی توانید بسیار فراتر روند. 716 00:34:43,719 --> 00:34:47,219 0 فاکتوریل نیز به عنوان 1 تعریف شده است. 717 00:34:47,219 --> 00:34:50,679 بنابراین، هنگامی که شما را به 0 یا 1 را دریافت کنید، شما در پایان، و شما می توانید 718 00:34:50,679 --> 00:34:53,219 شروع رفتن به بالا. 719 00:34:53,219 --> 00:34:59,540 بنابراین اگر ما می خواستیم به ارسال نامه بازگشتی تابع برای محاسبه فاکتوریل، 720 00:34:59,540 --> 00:35:02,170 ما قصد داریم به ارسال برخی از شبه که در حال حاضر. 721 00:35:02,170 --> 00:35:03,300 قبل از اینکه ما ارسال که شبه - 722 00:35:03,300 --> 00:35:05,660 من به شما بچه ها شما را در چند دقیقه برای نوشتن شبه کد و یا فقط فکر می کنم 723 00:35:05,660 --> 00:35:09,600 در مورد آن - دو چیز هر وجود دارد تابع بازگشتی نیاز دارد. 724 00:35:09,600 --> 00:35:12,530 آن دو چیز چیست؟ 725 00:35:12,530 --> 00:35:13,220 >> JACK: این به خودی خود تماس بگیرید. 726 00:35:13,220 --> 00:35:13,680 >> JASON HIRSCHHORN: نوح؟ 727 00:35:13,680 --> 00:35:14,460 اوه، جک. 728 00:35:14,460 --> 00:35:15,100 برو جلو. 729 00:35:15,100 --> 00:35:16,640 >> JACK: این به خودی خود تماس بگیرید. 730 00:35:16,640 --> 00:35:19,220 >> JASON HIRSCHHORN: بنابراین بازگشتی عملکرد نیاز به یک تماس بازگشتی، 731 00:35:19,220 --> 00:35:20,220 تماس بگیرید تا خود را. 732 00:35:20,220 --> 00:35:20,770 این یکی است. 733 00:35:20,770 --> 00:35:21,510 و چه چیز دیگری است؟ 734 00:35:21,510 --> 00:35:22,250 >> JACK: A مورد پایه. 735 00:35:22,250 --> 00:35:23,780 >> JASON HIRSCHHORN: A مورد پایه. 736 00:35:23,780 --> 00:35:26,940 مورد پایه است، در اینجا زمانی است که ما را متوقف کند. 737 00:35:26,940 --> 00:35:29,510 بنابراین عملکرد خود را به نام می شود. 738 00:35:29,510 --> 00:35:31,410 مورد پایه می آید برای اولین بار. 739 00:35:31,410 --> 00:35:33,710 شما می خواهید بدانید که اگر شما در پایان است. 740 00:35:33,710 --> 00:35:37,110 و اگر شما در پایان نیست، شما را فراخوانی بازگشتی خود را. 741 00:35:37,110 --> 00:35:39,880 و شما را از طریق این تابع دوباره، دوباره به حالت پایه خود را چک کنید. 742 00:35:39,880 --> 00:35:42,575 اگر شما پایان نیست، شما را یکی دیگر از تماس بازگشتی، 743 00:35:42,575 --> 00:35:44,130 و غیره و غیره. 744 00:35:44,130 --> 00:35:47,110 >> به همین دلیل توابع بازگشتی همیشه باید این موارد پایه و کسانی که 745 00:35:47,110 --> 00:35:48,210 تماس بازگشتی. 746 00:35:48,210 --> 00:35:51,280 اگر شما یک تماس بازگشتی ندارد، آن می تواند یک تابع بازگشتی نیست. 747 00:35:51,280 --> 00:35:53,210 اگر شما مورد پایه را نداشته باشند، شما برای همیشه رفتن و 748 00:35:53,210 --> 00:35:54,780 هیچ پایانی وجود دارد. 749 00:35:54,780 --> 00:35:57,870 و مورد پایه همیشه می آید اول، آنجا که شما همیشه می خواهید برای بررسی 750 00:35:57,870 --> 00:36:00,420 اگر شما در پایان اولین هستیم. 751 00:36:00,420 --> 00:36:04,770 بنابراین قبل از ما انجام برخی از شبه، چرا می توانم شما را نه یک دقیقه به فکر کردن در مورد 752 00:36:04,770 --> 00:36:09,360 چگونه یک تابع فاکتوریل بازگشتی می شود نوشته شده است؟ 753 00:36:09,360 --> 00:36:23,340 754 00:36:23,340 --> 00:36:26,010 >> همچنین، به عنوان بسیاری از شما انجام می دهند، نوشتن آن را در یک ورق کاغذ است 755 00:36:26,010 --> 00:36:27,960 آنچه شما باید به کار را در مسابقه فردا. 756 00:36:27,960 --> 00:36:32,160 عمل پس احتمالا خوب را مطمئن شوید که کد شما در حال نوشتن 757 00:36:32,160 --> 00:36:34,420 را بر روی صفحه کاغذ - 758 00:36:34,420 --> 00:36:35,160 یا شما می توانید انجام این کار. 759 00:36:35,160 --> 00:36:36,710 شما می دانید که در آن سمی کالن می باشد. 760 00:36:36,710 --> 00:36:37,660 شما می نحو به یاد داشته باشید. 761 00:36:37,660 --> 00:36:40,400 از آنجا که شما نه می توانند داشته باشند کامپایلر به شما بگویم اشتباهی کرده. 762 00:36:40,400 --> 00:37:02,356 763 00:37:02,356 --> 00:37:07,240 >> همچنین، در امتداد آن خطوط، فردا، زمانی که شما برنامه نویسی، اگر شما 764 00:37:07,240 --> 00:37:11,490 برای هم با عجله، و یا اگر شما خیلی هستید که چگونه شما قرار است به اشتباه گرفته 765 00:37:11,490 --> 00:37:16,030 ارسال نامه چیز خاصی در ج، آن به نظر شما واجب بودن به نوشتن شبه کد 766 00:37:16,030 --> 00:37:18,160 و یا ارسال نظر در نیز هست. 767 00:37:18,160 --> 00:37:21,940 از آنجا که اعتباری جزئی برای وجود دارد بسیاری از سوالات در مسابقه. 768 00:37:21,940 --> 00:37:24,840 بنابراین شما ممکن است با عجله، و یا شما فقط ممکن است اشتباه گرفته شود. 769 00:37:24,840 --> 00:37:28,030 نوشتن در نظرات و یا شبه کد راه اغلب که شما 770 00:37:28,030 --> 00:37:29,360 می تواند اعتباری نسبی دریافت کنید. 771 00:37:29,360 --> 00:37:31,440 >> بنابراین چیزی را ترک نمی کند خالی در مسابقه. 772 00:37:31,440 --> 00:37:33,490 هیچ مجازات وجود دارد قرار دادن اشیاء در. 773 00:37:33,490 --> 00:37:37,650 در واقع، قرار دادن در شبه کد یا نظر است که برای کمک به موتورهای حرفه ای 774 00:37:37,650 --> 00:37:40,410 کشف کردن اگر شما می دانند چه شما در حال صحبت کردن در مورد، و شاید جایزه 775 00:37:40,410 --> 00:37:42,030 شما برخی از اعتباری نسبی برای آن. 776 00:37:42,030 --> 00:37:44,510 >> همچنین در امتداد آن خطوط، ارسال به وضوح. 777 00:37:44,510 --> 00:37:47,650 اگر ما واقعا نمی تواند آنچه را که شما نوشتن، ما قصد داریم به شما تماس بگیرید 778 00:37:47,650 --> 00:37:49,900 در نیمه شب فردا به شکل آنچه شما نوشته است. 779 00:37:49,900 --> 00:37:51,520 ما فقط این رو خود را به پرواز نقطه است. 780 00:37:51,520 --> 00:37:56,570 ارسال به وضوح بنابراین ما می توانیم شنیدن، و یا به جای، ما می توانیم به عنوان خوانده شده آنچه شما نوشته است. 781 00:37:56,570 --> 00:38:00,230 >> و اگر آن را می گوید دو جمله، یک پاراگراف نوشتن نیست. 782 00:38:00,230 --> 00:38:02,280 به دنبال دستورالعمل. 783 00:38:02,280 --> 00:38:03,500 ارسال به وضوح. 784 00:38:03,500 --> 00:38:07,720 و ارسال در آن نظر و یا شبه برای سوالات است که می تواند 785 00:38:07,720 --> 00:38:10,270 جایزه اعتباری جزئی. 786 00:38:10,270 --> 00:38:12,520 >> خوب، اجازه دهید به فاکتوریل. 787 00:38:12,520 --> 00:38:15,000 بنابراین ما باید یک عامل عملکرد. 788 00:38:15,000 --> 00:38:18,400 789 00:38:18,400 --> 00:38:21,550 اگر من به واقع این ارسال در C، آنچه که من باید قبل از نام قرار 790 00:38:21,550 --> 00:38:22,800 از تابع؟ 791 00:38:22,800 --> 00:38:24,880 792 00:38:24,880 --> 00:38:30,060 نوع بازگشت، که، در این مورد، ما آن را از نوع int می دهد. 793 00:38:30,060 --> 00:38:35,450 و سپس در داخل آکولاد، است چه می رود در داخل آکولاد برای 794 00:38:35,450 --> 00:38:36,850 یک تابع؟ 795 00:38:36,850 --> 00:38:37,950 >> دانش آموزان: نوع برهان. 796 00:38:37,950 --> 00:38:39,150 >> JASON HIRSCHHORN: استدلال آن. 797 00:38:39,150 --> 00:38:42,680 بنابراین فاکتوریل احتمالا را استدلال. 798 00:38:42,680 --> 00:38:44,500 این احتمالا فقط یک آرگومان است. 799 00:38:44,500 --> 00:38:49,450 و ما می خواهم آن را به را یک عدد صحیح به نام X. 800 00:38:49,450 --> 00:38:52,770 و دوباره، اگر نوشتن نمونه اولیه از یک تابع و یا نوشتن تابع 801 00:38:52,770 --> 00:38:57,110 در کد خود را قبل از تعریف آن، شما ارسال به نوع داده و نام 802 00:38:57,110 --> 00:39:01,370 که متغیر فقط برای آن تابع. 803 00:39:01,370 --> 00:39:06,350 بنابراین شما می توانید برخی از تعداد به این عبور تابع، آن را به عنوان X اشاره 804 00:39:06,350 --> 00:39:07,340 داخلی. 805 00:39:07,340 --> 00:39:08,755 >> ما تابع فاکتوریل است. 806 00:39:08,755 --> 00:39:12,030 807 00:39:12,030 --> 00:39:15,850 ما دو چیز، یک پایه مورد نیاز و تماس بازگشتی. 808 00:39:15,850 --> 00:39:20,900 در مورد پایه برای فاکتوریل چیست؟ 809 00:39:20,900 --> 00:39:24,850 کسی که آن را نوشته و که نمی صحبت نشده است، چه پایه است 810 00:39:24,850 --> 00:39:26,100 مورد فاکتوریل؟ 811 00:39:26,100 --> 00:39:28,400 812 00:39:28,400 --> 00:39:30,930 >> STUDENT: اگر نفر کمتر است از 2، بازگشت 1. 813 00:39:30,930 --> 00:39:33,520 >> JASON HIRSCHHORN: اگر نفر است کمتر از 2، بازگشت 1. 814 00:39:33,520 --> 00:39:37,216 من دوست دارم که، چرا که طول می کشد مراقبت از 0 و 1. 815 00:39:37,216 --> 00:39:45,290 پس ما انجام X <2، بازگشت 1. 816 00:39:45,290 --> 00:39:47,870 اگر ما به تصویب 0، اگر ما را دریافت کنید گذشت 1، این تابع 817 00:39:47,870 --> 00:39:49,790 بلافاصله بازگشت 1. 818 00:39:49,790 --> 00:39:54,020 اگر ما به تصویب برخی بیشتر تعداد از یا برابر با 2، ما قصد داریم به 819 00:39:54,020 --> 00:39:55,370 باید تماس بازگشتی است. 820 00:39:55,370 --> 00:39:57,855 >> و به این ترتیب چگونه است که رفتن به کار می کند؟ 821 00:39:57,855 --> 00:40:01,070 آیا می توانم کسی دیگری که در این کار است که سخن گفته نشده است من را 822 00:40:01,070 --> 00:40:07,380 تماس بازگشتی برای این تابع در شبه؟ 823 00:40:07,380 --> 00:40:10,770 اگر ما در یک عدد X گذشت و آن را بزرگتر از 2، چه 824 00:40:10,770 --> 00:40:13,370 ما می خواهیم انجام دهیم؟ 825 00:40:13,370 --> 00:40:17,930 ما همچنین یک مثال نوشته شده در سمت که ممکن است به شما تذکر بدهد. 826 00:40:17,930 --> 00:40:20,770 >> STUDENT: تماس بگیرید برپایه X فاکتوریل عدد منهای 1؟ 827 00:40:20,770 --> 00:40:22,020 >> JASON HIRSCHHORN: دقیقا درست است. 828 00:40:22,020 --> 00:40:24,610 829 00:40:24,610 --> 00:40:37,750 ما قصد داریم برای بازگشت به زمان X فاکتوریل عدد منهای 1. 830 00:40:37,750 --> 00:40:41,810 و این، حتی اگر من نوشتم، اساسا، آنچه که شما به زبان انگلیسی گفت: 831 00:40:41,810 --> 00:40:44,580 این تابع فاکتوریل خواهد دوباره به نام. 832 00:40:44,580 --> 00:40:46,320 این بستگی X منهای 1 را اجرا کند. 833 00:40:46,320 --> 00:40:49,320 آن را با یک عدد صحیح بازگشت، و سپس آن را به این دو ضرب 834 00:40:49,320 --> 00:40:52,050 با هم، و ارزش خواهد بود به آن چه که به نام بازگشت 835 00:40:52,050 --> 00:40:55,010 تابع فاکتوریل، که ممکن است می شود به عنوان مثال دیگری از 836 00:40:55,010 --> 00:40:58,420 این تابع فاکتوریل. 837 00:40:58,420 --> 00:41:01,360 >> به طوری که یک نمونه از بازگشتی است تابع، بسیار 838 00:41:01,360 --> 00:41:02,530 تابع ساده بازگشتی. 839 00:41:02,530 --> 00:41:04,530 اما بسیاری از آنها خواهد شد شبیه به این باشد. 840 00:41:04,530 --> 00:41:11,170 اگر می خواهید یک بازگشتی خوب دوست به چالش کشیدن برای مسابقه، سعی کنید برنامه نویسی 841 00:41:11,170 --> 00:41:13,230 جستجوی دودویی به صورت بازگشتی. 842 00:41:13,230 --> 00:41:18,950 چرا که اگر شما جستجوی دودویی برای انجام مشکل مجموعه سه، شما احتمالا آن را انجام داد 843 00:41:18,950 --> 00:41:21,730 تکرار در یک حلقه در حالی که. 844 00:41:21,730 --> 00:41:23,700 >> اما آن را نیز می تواند نوشته شود به صورت بازگشتی. 845 00:41:23,700 --> 00:41:26,310 شما در حال رفتن به نیاز به نوشتن خود را توابع است که برخی از 846 00:41:26,310 --> 00:41:29,020 آرگومان خط فرمان های مختلف - و یا نه استدلال خط فرمان، برخی از 847 00:41:29,020 --> 00:41:30,910 مختلف استدلال فقط به طور منظم. 848 00:41:30,910 --> 00:41:33,870 اما شما می توانید از جستجوی دودویی ارسال به صورت بازگشتی نیز هست. 849 00:41:33,870 --> 00:41:36,190 >> STUDENT: بنابراین شما می توانید از هم نوشته شده است، به جای X منهای 1، شما 850 00:41:36,190 --> 00:41:39,502 همچنین می توانم از X منهای نوشته شده است منفی، و یا شما می توانید از 851 00:41:39,502 --> 00:41:40,830 نوشته شده X منفی منفی. 852 00:41:40,830 --> 00:41:44,740 می تواند شما را واقعا به سرعت توضیح دهد آن خواهد بود چیز های مختلف، 853 00:41:44,740 --> 00:41:49,510 مانند چه تفاوت است بین X منفی منفی و منفی منهای X؟ 854 00:41:49,510 --> 00:41:51,320 >> JASON HIRSCHHORN: نه، من نمی رفتن به رفتن به آن است. 855 00:41:51,320 --> 00:41:55,500 اما من به شما در مورد آن بعد از صحبت کلاس. X منهای منهای، منهای منهای X 856 00:41:55,500 --> 00:41:57,780 واحد کم میکنیم x به 1. 857 00:41:57,780 --> 00:41:59,090 اما آنها این کار را کمی متفاوت است. 858 00:41:59,090 --> 00:42:00,340 اما من نمی خواهم برای رفتن به آن است. 859 00:42:00,340 --> 00:42:04,330 860 00:42:04,330 --> 00:42:09,090 سوال دیگر در مورد بازگشت و یا این تابع؟ 861 00:42:09,090 --> 00:42:10,140 این واقعا حتی شبه نیست. 862 00:42:10,140 --> 00:42:15,060 اساسا این کد در C شما می توانید برای این ارسال. 863 00:42:15,060 --> 00:42:19,393 >> OK، هر گونه سؤال دیگر در مورد موضوعات بالا؟ 864 00:42:19,393 --> 00:42:19,864 آره. 865 00:42:19,864 --> 00:42:23,130 >> STUDENT: من یک لپتاپ از ممیز شناور و دقت. 866 00:42:23,130 --> 00:42:24,260 >> JASON HIRSCHHORN: شناور نقطه و دقت. 867 00:42:24,260 --> 00:42:26,920 آیا می توانم کسی واقعا به سرعت من مختصر و مفید از را 868 00:42:26,920 --> 00:42:28,210 ممیز شناور و دقت؟ 869 00:42:28,210 --> 00:42:30,420 همه شما تا به حال به انجام این کار برای شما مشکل تعیین می کنند، بنابراین شما تمام است 870 00:42:30,420 --> 00:42:31,700 آشنایی با آن. 871 00:42:31,700 --> 00:42:35,090 یا شاید نه همه شما. 872 00:42:35,090 --> 00:42:36,602 هر کسی؟ 873 00:42:36,602 --> 00:42:39,530 من یک نقطه آغاز را. 874 00:42:39,530 --> 00:42:40,750 ممیز شناور و دقت. 875 00:42:40,750 --> 00:42:42,380 مشکل چیست؟ 876 00:42:42,380 --> 00:42:42,960 بله. 877 00:42:42,960 --> 00:42:43,680 ویکتوریا؟ 878 00:42:43,680 --> 00:42:44,480 >> ونسا: ونسا. 879 00:42:44,480 --> 00:42:45,285 >> JASON HIRSCHHORN: ونسا. 880 00:42:45,285 --> 00:42:45,680 متأسفم. 881 00:42:45,680 --> 00:42:51,550 >> ونسا: تنها تعداد محدودی وجود دارد از اعداد است که می تواند نشان داده 882 00:42:51,550 --> 00:42:57,930 دلیل این که شما در، در هستی ما مورد، یک سیستم 32 بیتی. 883 00:42:57,930 --> 00:43:03,080 بنابراین شما نوع به برخی از اعداد را تشکیل می دهند. 884 00:43:03,080 --> 00:43:03,910 >> JASON HIRSCHHORN: پس این دقیقا درست است. 885 00:43:03,910 --> 00:43:08,110 تنها مقدار مشخصی از وجود دارد اعداد است که می توان ارائه داد. 886 00:43:08,110 --> 00:43:11,770 اگر دو عدد بسیار بزرگ شما را چند برابر، ممکن است مقدار سرریز 887 00:43:11,770 --> 00:43:13,950 فضاهای شما را مجبور به نشان دادن یک عدد صحیح. 888 00:43:13,950 --> 00:43:17,930 به همین دلیل گاهی اوقات استفاده می کنیم بلند بلند به جای یک int. 889 00:43:17,930 --> 00:43:19,210 است که فضای بیشتر. 890 00:43:19,210 --> 00:43:21,210 است که می تواند تعداد زیادی نگه دارد. 891 00:43:21,210 --> 00:43:24,310 >> دقت ممیز شناور است که با که، بلکه برای انجام با 892 00:43:24,310 --> 00:43:29,300 واقعیت این است که اعداد اعشاری می باشد همیشه نشان داده نمی شود. 893 00:43:29,300 --> 00:43:29,540 متأسفم. 894 00:43:29,540 --> 00:43:31,280 اجازه بدهید من قرار داده این را به بالا. 895 00:43:31,280 --> 00:43:36,610 اعشاری عدد 1.0 است که همیشه نشان داده شده است مانند شما انتظار می رود، 896 00:43:36,610 --> 00:43:40,770 1.000000000. 897 00:43:40,770 --> 00:43:50,360 این است که گاهی اوقات به عنوان نشان داده شده است 1.000000001 یا 0.999999999. 898 00:43:50,360 --> 00:43:52,780 این ممکن است حتی 89 پرتاب در جایی. 899 00:43:52,780 --> 00:43:56,560 بنابراین کسانی که اعداد اعشاری نیست نشان داده دقیقا مثل شما که 900 00:43:56,560 --> 00:43:58,430 آنها را به انتظار نشان داده می شود. 901 00:43:58,430 --> 00:44:00,010 >> بنابراین در مسئله تنظیم - 902 00:44:00,010 --> 00:44:00,860 آن دو بود؟ - 903 00:44:00,860 --> 00:44:05,290 مشکل تنظیم دو، که در آن ما با آن برخورد اعداد ممیز شناور، زمانی که ما می خواستیم 904 00:44:05,290 --> 00:44:08,690 آنها برای نشان دادن دقیقا همان چیزی است که ما می خواستیم آنها را برای نشان دادن، تعداد 905 00:44:08,690 --> 00:44:12,860 از سکه، و یا تعدادی از سنت، ما آنها را با 100 ضرب. 906 00:44:12,860 --> 00:44:14,750 ما آنها را گرد. 907 00:44:14,750 --> 00:44:18,660 و بعد ما قطع همه چیز پشت از نقطه اعشار. 908 00:44:18,660 --> 00:44:22,020 این بود تا اطمینان حاصل شود که آنها را در واقع برابر دقیقا همان چیزی است که ما می خواستیم 909 00:44:22,020 --> 00:44:22,410 آنها برابر. 910 00:44:22,410 --> 00:44:26,870 >> از آنجا که شما را چیزی است که شناور و تبدیل آن به یک int، شما 911 00:44:26,870 --> 00:44:29,860 قطع همه چیز را به سمت راست از نقطه اعشار. 912 00:44:29,860 --> 00:44:33,900 از آنجا که برخی از نقطه شناور وجود دارد عدم دقت، 100.000 ممکن است 913 00:44:33,900 --> 00:44:37,440 به عنوان نماینده 99.999999999. 914 00:44:37,440 --> 00:44:40,350 و اگر شما فقط قطع همه چیز را به حق حق دور، شما به 915 00:44:40,350 --> 00:44:41,600 بدست آوردن شماره اشتباه است. 916 00:44:41,600 --> 00:44:44,050 917 00:44:44,050 --> 00:44:44,180 آره. 918 00:44:44,180 --> 00:44:45,290 >> STUDENT: من تا به حال یک سوال در مورد ریخته گری. 919 00:44:45,290 --> 00:44:47,500 چه منظور آن را در رخ می دهد؟ 920 00:44:47,500 --> 00:44:54,480 اگر شما می خواهم شناور انجام، براکت، 1 تقسیم 10، آیا آن را 1 تقسیم بر 10، 921 00:44:54,480 --> 00:44:58,910 سپس 0.1، پس از آن نوبت آن را به یک شناور؟ 922 00:44:58,910 --> 00:45:01,470 >> JASON HIRSCHHORN: اگر شما شناور 1 تقسیم بر 10 - 923 00:45:01,470 --> 00:45:02,550 >> STUDENT: آره، و پس از آن برابر است - 924 00:45:02,550 --> 00:45:04,240 خوب، آن را به طور معمول آن را در برابر - 925 00:45:04,240 --> 00:45:04,690 آره. 926 00:45:04,690 --> 00:45:06,760 شما می خواهید به آن شناور است، درست است؟ 927 00:45:06,760 --> 00:45:12,790 >> JASON HIRSCHHORN: OK، بنابراین ما در حال رفتن به استفاده از آن segue به بدانند 928 00:45:12,790 --> 00:45:15,390 پاسخ به این سوالات از طریق برنامه نویسی. 929 00:45:15,390 --> 00:45:18,180 از آنجا که شما احتمالا به مقدار زیادی از این سوالات دقیقه، و یک راه خوب 930 00:45:18,180 --> 00:45:19,100 برای حل آنها از طریق برنامه نویسی. 931 00:45:19,100 --> 00:45:21,320 بنابراین ما در حال به کد این حق در حال حاضر، و پس از آن ما قصد داریم برای رفتن به عقب و 932 00:45:21,320 --> 00:45:24,020 کد سوال شما تا به حال. 933 00:45:24,020 --> 00:45:24,950 >> بنابراین در خط اول - 934 00:45:24,950 --> 00:45:29,390 من باید آن نوشته شده است - آنچه که اولین چیزی که ما می خواهیم انجام دهیم زمانی که ما 935 00:45:29,390 --> 00:45:32,250 باز کردن فایل جدید در نرمافزاری gedit؟ 936 00:45:32,250 --> 00:45:34,190 >> STUDENT: شامل. 937 00:45:34,190 --> 00:45:35,920 >> JASON HIRSCHHORN: شامل چه؟ 938 00:45:35,920 --> 00:45:37,952 >> STUDENT: کتابخانه CS50. 939 00:45:37,952 --> 00:45:39,920 >> JASON HIRSCHHORN: OK. 940 00:45:39,920 --> 00:45:42,590 چه چیز دیگری باید شامل؟ 941 00:45:42,590 --> 00:45:46,820 ما فقط قصد داریم به بررسی آنچه اتفاق می افتد هنگامی که شما چیزی به شناور، رای دادند. 942 00:45:46,820 --> 00:45:48,605 اما چیزی که ما نیاز به عبارتند از اگر ما رفتن به نوشتن یک برنامه C؟ 943 00:45:48,605 --> 00:45:49,300 >> STUDENT: استاندارد I / O. 944 00:45:49,300 --> 00:45:50,625 >> JASON HIRSCHHORN: stdio.h. 945 00:45:50,625 --> 00:45:54,880 ما در واقع لازم نیست، برای این برنامه، cs50.h، حتی اگر آن را 946 00:45:54,880 --> 00:45:55,920 همیشه مفید به آن باشد. 947 00:45:55,920 --> 00:45:58,260 اما ما همیشه باید stdio.h. 948 00:45:58,260 --> 00:45:59,660 >> STUDENT: هنگامی که برنامه نویسی در C؟ 949 00:45:59,660 --> 00:46:15,770 >> JASON HIRSCHHORN: هنگامی که برنامه نویسی در C. 950 00:46:15,770 --> 00:46:17,090 >> پس من آن را به عنوان این فایل ج. را نجات دهد. 951 00:46:17,090 --> 00:46:18,590 من مقداری نحو برجسته به خوبی دریافت کنید. 952 00:46:18,590 --> 00:46:22,890 من از درجه اعتبار ساقط داخل اصلی نوشت. 953 00:46:22,890 --> 00:46:24,792 چه باطل چیست؟ 954 00:46:24,792 --> 00:46:26,740 >> STUDENT: آیا هیچ را ندارد آرگومان خط فرمان. 955 00:46:26,740 --> 00:46:28,900 >> JASON HIRSCHHORN: به معنی خالی، در این مورد، اصلی هیچ را ندارد 956 00:46:28,900 --> 00:46:29,700 آرگومان خط فرمان. 957 00:46:29,700 --> 00:46:32,720 در موارد دیگر، به این معنی است که تابع به این استدلال خط فرمان را ندارد. 958 00:46:32,720 --> 00:46:36,560 و یا تابع، اگر من به نوشتن از درجه اعتبار ساقط اصلی (خالی)، که می گویند اصلی 959 00:46:36,560 --> 00:46:38,460 هر چیزی بازگشت نیست. 960 00:46:38,460 --> 00:46:39,960 پس از درجه اعتبار ساقط فقط به معنی هیچ چیز نیست. 961 00:46:39,960 --> 00:46:42,510 چه من ارسال اگر من به بود را استدلال خط فرمان؟ 962 00:46:42,510 --> 00:46:45,250 963 00:46:45,250 --> 00:46:47,150 >> دانشجو: اعضای هیات قوس ج در برابر قوس رشته 964 00:46:47,150 --> 00:46:49,055 >> JASON HIRSCHHORN: بین المللی تعداد آنها و argv رشته است. 965 00:46:49,055 --> 00:46:54,050 966 00:46:54,050 --> 00:46:55,572 آیا این درست است؟ 967 00:46:55,572 --> 00:46:58,720 >> STUDENT: این کاراکتر براکت و argv ستاره است. 968 00:46:58,720 --> 00:47:01,730 >> JASON HIRSCHHORN: بنابراین شما می توانید ارسال براکت و argv یا رشته ی argv ستاره کاراکتر 969 00:47:01,730 --> 00:47:03,710 براکت، اما شما نیاز به براکت. 970 00:47:03,710 --> 00:47:06,290 از آنجا ی argv یک آرایه است از رشته ها، به یاد داشته باشید. 971 00:47:06,290 --> 00:47:07,360 این فقط یک رشته نیست. 972 00:47:07,360 --> 00:47:10,350 بنابراین argv را رشته است، در اینجا یک رشته به نام argv را. 973 00:47:10,350 --> 00:47:13,630 براکت و argv رشته است، در اینجا آرایه ای از رشته ها. 974 00:47:13,630 --> 00:47:17,865 بنابراین اعضای هیات براکت و argv رشته تعداد آنها خواهد بود چیزی که من 975 00:47:17,865 --> 00:47:18,810 احتمالا ارسال. 976 00:47:18,810 --> 00:47:23,050 >> بنابراین شما می خواهید را به صرفه جویی در یک عدد صحیح؟ 977 00:47:23,050 --> 00:47:24,285 >> STUDENT: آره، عدد صحیح. 978 00:47:24,285 --> 00:47:25,840 و یا در شناور. 979 00:47:25,840 --> 00:47:26,710 >> JASON HIRSCHHORN: در شناور؟ 980 00:47:26,710 --> 00:47:30,790 مانند، شناور X برابر با 1 تقسیم بر 10. 981 00:47:30,790 --> 00:47:32,040 >> JASON HIRSCHHORN: OK. 982 00:47:32,040 --> 00:47:40,160 983 00:47:40,160 --> 00:47:42,240 چگونه می توانم نسخه قابل چاپ I از شناور در چون printf؟ 984 00:47:42,240 --> 00:47:45,100 985 00:47:45,100 --> 00:47:46,714 چه؟ 986 00:47:46,714 --> 00:47:47,560 >> STUDENT:٪ F. 987 00:47:47,560 --> 00:47:48,300 >> JASON HIRSCHHORN:٪ F. 988 00:47:48,300 --> 00:47:50,810 یک عدد صحیح چیست؟ 989 00:47:50,810 --> 00:47:52,110 د و یا من. 990 00:47:52,110 --> 00:47:53,000 رشته چیست؟ 991 00:47:53,000 --> 00:47:54,240 >> STUDENT: ها. 992 00:47:54,240 --> 00:47:56,140 >> JASON HIRSCHHORN: ها. 993 00:47:56,140 --> 00:47:57,550 چگونه می توانم یک خط جدید را دانلود کنم؟ 994 00:47:57,550 --> 00:47:58,800 >> STUDENT: ممیزوارونه نفر. 995 00:47:58,800 --> 00:48:04,610 996 00:48:04,610 --> 00:48:07,100 >> JASON HIRSCHHORN: انجام آنچه بازگشت I اگر اجرا می شود اصلی به درستی؟ 997 00:48:07,100 --> 00:48:08,360 >> STUDENT: 0. 998 00:48:08,360 --> 00:48:09,430 آیا من نیاز به نوشتن این خط، هر چند؟ 999 00:48:09,430 --> 00:48:10,170 >> STUDENT: شماره 1000 00:48:10,170 --> 00:48:11,513 OK، ما آن را ارسال نمی کند، پس از آن. 1001 00:48:11,513 --> 00:48:16,450 1002 00:48:16,450 --> 00:48:17,190 آیا می توانم هر کسی به عنوان خوانده شده که؟ 1003 00:48:17,190 --> 00:48:18,485 به نظر می رسد کمی کوچک است. 1004 00:48:18,485 --> 00:48:20,160 همه می بینند، یا باید من آن را تر کند؟ 1005 00:48:20,160 --> 00:48:23,480 1006 00:48:23,480 --> 00:48:25,100 من فکر می کنم برای دوربین، ما را آن را کمی بزرگتر، هر چند. 1007 00:48:25,100 --> 00:48:35,750 1008 00:48:35,750 --> 00:48:38,410 >> JASON HIRSCHHORN: اگر من می خواهم به نوبه خود این ج را به یک فایل اجرایی، چه 1009 00:48:38,410 --> 00:48:39,260 را ارسال کنم؟ 1010 00:48:39,260 --> 00:48:41,610 >> STUDENT: ساخت آزمون. 1011 00:48:41,610 --> 00:48:42,080 >> JASON HIRSCHHORN: ببخشید؟ 1012 00:48:42,080 --> 00:48:42,790 >> STUDENT: ساخت آزمون. 1013 00:48:42,790 --> 00:48:44,040 >> JASON HIRSCHHORN: ساخت آزمون. 1014 00:48:44,040 --> 00:48:46,700 1015 00:48:46,700 --> 00:48:48,410 ما در مورد صحبت شد این خط پیش از آن. 1016 00:48:48,410 --> 00:48:49,140 صدای جرنگ جرنگ. 1017 00:48:49,140 --> 00:48:51,270 صدای جرنگ جرنگ چیست؟ 1018 00:48:51,270 --> 00:48:52,200 نام کامپایلر. 1019 00:48:52,200 --> 00:48:53,920 این خط چیست؟ 1020 00:48:53,920 --> 00:48:55,580 >> STUDENT: این مجموعه برای استفاده از GDB. 1021 00:48:55,580 --> 00:48:59,230 >> JASON HIRSCHHORN: مجموعه آن را برای استفاده از GDB تا. 1022 00:48:59,230 --> 00:49:02,338 این خط، آنچه که؟ 1023 00:49:02,338 --> 00:49:03,290 >> STUDENT: کد منبع. 1024 00:49:03,290 --> 00:49:06,010 >> JASON HIRSCHHORN: که منبع فایل، فایل ج. 1025 00:49:06,010 --> 00:49:08,150 این دو خط چه کاری انجام دهید؟ 1026 00:49:08,150 --> 00:49:10,245 یا این دو خط است. 1027 00:49:10,245 --> 00:49:12,300 >> STUDENT: نام این آزمایش آن. 1028 00:49:12,300 --> 00:49:15,410 >> JASON HIRSCHHORN: بنابراین درجه فاصله را می گوید، نام آن را چیزی متفاوت است. 1029 00:49:15,410 --> 00:49:16,790 و در اینجا شما آن را خواستار آزمون. 1030 00:49:16,790 --> 00:49:18,900 اگر من که نه در، چه خواهد آن را به این نام؟ 1031 00:49:18,900 --> 00:49:20,260 >> STUDENT: A.out. 1032 00:49:20,260 --> 00:49:22,340 >> JASON HIRSCHHORN: A.out. 1033 00:49:22,340 --> 00:49:25,366 این به چه کاری انجام دهید؟ 1034 00:49:25,366 --> 00:49:27,670 >> STUDENT: لینک کتابخانه ریاضی. 1035 00:49:27,670 --> 00:49:29,550 >> JASON HIRSCHHORN: این لینک در کتابخانه ریاضی. 1036 00:49:29,550 --> 00:49:32,880 ما کتابخانه ریاضی را شامل نمی شود، اما از آن بسیار رایج، آنها 1037 00:49:32,880 --> 00:49:35,780 را نوشته شده است که همیشه شامل کتابخانه ریاضی. 1038 00:49:35,780 --> 00:49:39,050 و به همین ترتیب، این شامل کتابخانه CS50. 1039 00:49:39,050 --> 00:49:43,010 >> OK، بنابراین اگر لیست ما، ما در حال حاضر یک فایل اجرایی به نام آزمون. 1040 00:49:43,010 --> 00:49:45,150 برای اجرای آن، می نویسم آزمون. 1041 00:49:45,150 --> 00:49:48,330 من می بینم که ممیز شناور من، به عنوان انتظار می رود، برابر با 0. 1042 00:49:48,330 --> 00:49:50,890 1043 00:49:50,890 --> 00:49:51,590 آیا این - 1044 00:49:51,590 --> 00:49:52,060 بنابراین - 1045 00:49:52,060 --> 00:49:55,210 >> STUDENT: پس اگر شما را در حال حاضر شناور، مانند شما آن را بازیگران به عنوان شناور - 1046 00:49:55,210 --> 00:49:56,870 >> JASON HIRSCHHORN: نظرسنجی ها 1 به شناور؟ 1047 00:49:56,870 --> 00:49:59,180 >> دانشجو: نه، بازیگران چیز کامل - 1048 00:49:59,180 --> 00:49:59,500 آره. 1049 00:49:59,500 --> 00:50:02,460 اگر شما فقط از آن، می که 0.1 را؟ 1050 00:50:02,460 --> 00:50:07,170 >> JASON HIRSCHHORN: خوب، پس واقعا به سرعت، 1 تقسیم بر 10، کسانی که 1051 00:50:07,170 --> 00:50:08,690 اعداد صحیح در حال تقسیم شده است. 1052 00:50:08,690 --> 00:50:13,580 بنابراین، هنگامی که شما عدد صحیح تقسیم می شوند، آنها 0، و شما صرفه جویی که 0 در 1053 00:50:13,580 --> 00:50:17,170 شناور، چرا که بریده بریده است فقط تقسیم صحیح. 1054 00:50:17,170 --> 00:50:19,180 بنابراین در حال حاضر ما در حال تبدیل به چیزی به یک شناور. 1055 00:50:19,180 --> 00:50:21,650 >> بیایید ببینید چه اتفاقی می افتد. 1056 00:50:21,650 --> 00:50:22,900 ما آزمون شما را. 1057 00:50:22,900 --> 00:50:25,870 1058 00:50:25,870 --> 00:50:31,090 بنابراین در حال حاضر ما می بینیم که که بریده بریده بود تقسیم عدد صحیح، آن را شناور 1059 00:50:31,090 --> 00:50:32,640 تقسیم نقطه. 1060 00:50:32,640 --> 00:50:35,700 از آنجا که یکی از استدلال های آن به یک شناور بازیگران شده بود. 1061 00:50:35,700 --> 00:50:38,380 بنابراین در حال حاضر آن شد و گفت: درمان این تقسیم بندی که ما با خرید و فروش 1062 00:50:38,380 --> 00:50:40,140 نقاط شناور، و نه با اعداد صحیح. 1063 00:50:40,140 --> 00:50:42,760 و بنابراین ما جواب انتظار می رود دریافت کنید. 1064 00:50:42,760 --> 00:50:44,620 >> بیایید ببینید چه اتفاقی می افتد - 1065 00:50:44,620 --> 00:50:47,103 اوه. 1066 00:50:47,103 --> 00:50:51,646 اگر من می خواستم به چاپ دهدهی تر لکه، چگونه می تواند من که؟ 1067 00:50:51,646 --> 00:50:55,550 >> STUDENT: نقطه نقطه F، و یا به عنوان بسیاری از رقم اعشار به عنوان شما می خواهید. 1068 00:50:55,550 --> 00:51:02,280 1069 00:51:02,280 --> 00:51:04,440 >> JASON HIRSCHHORN: پس من نسخه قابل چاپ 10 نقطه اعشار. 1070 00:51:04,440 --> 00:51:06,610 و ما در حال حاضر ما در حال رسیدن برخی چیزهای عجیب و غریب. 1071 00:51:06,610 --> 00:51:09,650 و که به سوال خود را می رود در مورد ممیز شناور عدم دقت. 1072 00:51:09,650 --> 00:51:10,950 چیزهای عجیب و غریب ذخیره شده در اینجا وجود دارد. 1073 00:51:10,950 --> 00:51:13,650 1074 00:51:13,650 --> 00:51:15,275 >> OK، می کند که پاسخ به سوال شما؟ 1075 00:51:15,275 --> 00:51:18,550 1076 00:51:18,550 --> 00:51:20,200 چه چیز دیگری می خواهید بود به کد به سرعت؟ 1077 00:51:20,200 --> 00:51:25,470 >> STUDENT: من فقط می خواستم برای دیدن اینکه آیا یا نه، اگر شما آزاد تا برخی از اشاره گر، 1078 00:51:25,470 --> 00:51:30,410 آیا که اشاره گر هنوز هم در ذخیره کرده بود آن آدرس از آنچه در آن بوده است 1079 00:51:30,410 --> 00:51:32,170 با اشاره به قبلا. 1080 00:51:32,170 --> 00:51:34,100 >> JASON HIRSCHHORN: OK، بنابراین اجازه دهید کار را انجام دهید. 1081 00:51:34,100 --> 00:51:38,030 PTR ستاره چهار، این باعث ایجاد یک متغیر نام PTR از نوع ستاره کاراکتر. 1082 00:51:38,030 --> 00:51:39,280 چگونه malloc ارسال I؟ 1083 00:51:39,280 --> 00:51:40,550 آلدن؟ 1084 00:51:40,550 --> 00:51:41,800 >> آلدن: فقط malloc. 1085 00:51:41,800 --> 00:51:44,820 1086 00:51:44,820 --> 00:51:51,040 اما پس از آن را به اندازه و در این مورد، من حدس می زنم شما می خواهم 1087 00:51:51,040 --> 00:51:52,465 شود با اشاره به char. 1088 00:51:52,465 --> 00:51:54,450 پس از آن می شود، کاراکتر. 1089 00:51:54,450 --> 00:51:57,520 >> JASON HIRSCHHORN: OK، بنابراین بیشتر عموما، در داخل - 1090 00:51:57,520 --> 00:51:58,770 اجازه دهید را ویرایش کنید. 1091 00:51:58,770 --> 00:52:05,100 1092 00:52:05,100 --> 00:52:09,260 در داخل malloc، شما می خواهید تعداد در پشته کلمه در ادامه متن. 1093 00:52:09,260 --> 00:52:12,320 به طور کلی، آنچه که ما دیده ایم که ما هستیم انجام شده است ما قصد داریم به malloc 1094 00:52:12,320 --> 00:52:14,940 رشته ها، به عنوان مثال، و یا آرایه از اعداد صحیح. 1095 00:52:14,940 --> 00:52:21,600 بنابراین اگر ما می خواهیم 10 عدد صحیح، و یا 10 کاراکتر، 10 به ما 10 را. 1096 00:52:21,600 --> 00:52:24,370 و پس از آن اندازه کاراکتر می دهند ما که اندازه ای از کاراکتر ها که در 1097 00:52:24,370 --> 00:52:25,120 این مورد 1 بایت است. 1098 00:52:25,120 --> 00:52:26,250 ما 10 بایت. 1099 00:52:26,250 --> 00:52:28,540 اگر قرار بود برای نوشتن اندازه هوشمند، که ما 40 بایت می دهد. 1100 00:52:28,540 --> 00:52:31,520 >> پس عام تر، در داخل از malloc تعداد بایت شما می خواهید می باشد. 1101 00:52:31,520 --> 00:52:34,620 در این مورد، ما در حال گرفتن 1 بایت. 1102 00:52:34,620 --> 00:52:36,900 که مانند یک استفاده عجیب و غریب به نظر می رسد از malloc، اما برای ما 1103 00:52:36,900 --> 00:52:38,470 اهداف را حس می کند. 1104 00:52:38,470 --> 00:52:40,420 به طوری که وجود دارد. 1105 00:52:40,420 --> 00:52:43,420 >> ما قصد داریم برای تماس رایگان. 1106 00:52:43,420 --> 00:52:47,040 ما از آن خلاص شوید و ما استفاده PTR دوباره. 1107 00:52:47,040 --> 00:52:48,750 و چه می خواهید چک کنید؟ 1108 00:52:48,750 --> 00:52:50,550 >> STUDENT: من فقط می خواستم که آیا بررسی یا نه هر چیزی وجود دارد 1109 00:52:50,550 --> 00:52:51,900 در داخل آن است. 1110 00:52:51,900 --> 00:52:53,050 >> JASON HIRSCHHORN: بنابراین آیا آن را به هر چیزی اشاره کرد؟ 1111 00:52:53,050 --> 00:52:57,740 >> STUDENT: آره، دقیقا، چه آن را هنوز هم یک آدرس حافظه است. 1112 00:52:57,740 --> 00:53:02,220 >> JASON HIRSCHHORN: بنابراین شما می خواهید برای بررسی ارزش PTR؟ 1113 00:53:02,220 --> 00:53:03,470 >> STUDENT: بله، دقیقا. 1114 00:53:03,470 --> 00:53:07,940 1115 00:53:07,940 --> 00:53:10,160 >> JASON HIRSCHHORN: چه چیزی در اینجا ارسال I اگر من می خواهم برای بررسی ارزش از 1116 00:53:10,160 --> 00:53:11,880 نقطه - چه چیزی است، اردن گفت: ارزش؟ 1117 00:53:11,880 --> 00:53:13,720 و یا چه در داخل از PTR ذخیره می شود؟ 1118 00:53:13,720 --> 00:53:14,620 >> STUDENT: یک آدرس حافظه. 1119 00:53:14,620 --> 00:53:16,330 >> JASON HIRSCHHORN: یک آدرس حافظه. 1120 00:53:16,330 --> 00:53:20,520 بنابراین اگر من ارسال فقط این، آن را خواهید من ارزش PTR را. 1121 00:53:20,520 --> 00:53:22,800 و چگونه چاپ من آدرس حافظه؟ 1122 00:53:22,800 --> 00:53:26,470 رشته فرمت چه برای آدرس حافظه؟ 1123 00:53:26,470 --> 00:53:27,430 >> STUDENT:٪ ص. 1124 00:53:27,430 --> 00:53:28,050 >> JASON HIRSCHHORN:٪ ص. 1125 00:53:28,050 --> 00:53:29,500 ٪ s در یک رشته است. 1126 00:53:29,500 --> 00:53:30,750 ٪ p برای اشاره گر. 1127 00:53:30,750 --> 00:53:40,820 1128 00:53:40,820 --> 00:53:43,540 آیا این درست است؟ 1129 00:53:43,540 --> 00:53:44,790 درست است. 1130 00:53:44,790 --> 00:53:49,450 1131 00:53:49,450 --> 00:53:51,040 بنابراین PTR برابر - 1132 00:53:51,040 --> 00:53:53,350 هنوز چیزی در آن است. 1133 00:53:53,350 --> 00:53:56,110 1134 00:53:56,110 --> 00:53:57,645 این است که احتمالا بیشتر سوال جالب. 1135 00:53:57,645 --> 00:53:59,198 که خط چکار می کند؟ 1136 00:53:59,198 --> 00:54:00,830 >> STUDENT: گسل SEG. 1137 00:54:00,830 --> 00:54:01,310 >> JASON HIRSCHHORN: چه؟ 1138 00:54:01,310 --> 00:54:02,678 >> STUDENT: من فکر می کنم seg به گسل. 1139 00:54:02,678 --> 00:54:03,574 >> JASON HIRSCHHORN: HM؟ 1140 00:54:03,574 --> 00:54:04,920 >> STUDENT: من فکر می کنم آن را گسل seg به. 1141 00:54:04,920 --> 00:54:08,265 >> JASON HIRSCHHORN: بنابراین این خط از PTR کد، ستاره، چه 1142 00:54:08,265 --> 00:54:10,152 آیا این ستاره چیست؟ 1143 00:54:10,152 --> 00:54:11,240 >> STUDENT: محتوا از. 1144 00:54:11,240 --> 00:54:11,560 >> JASON HIRSCHHORN: آره. 1145 00:54:11,560 --> 00:54:13,910 برو برای دریافت مطالب از. 1146 00:54:13,910 --> 00:54:16,830 پس این است که برای رفتن به حافظه آدرس وجود دارد و به من می دهد که. 1147 00:54:16,830 --> 00:54:21,030 I٪ C استفاده می شود در اینجا به دلیل وجود دارد هستند شخصیت های ذخیره شده وجود دارد. 1148 00:54:21,030 --> 00:54:23,390 بنابراین ما در حال رفتن به آن آدرس ما فقط دیدم - یا آن را احتمالا می شود 1149 00:54:23,390 --> 00:54:25,190 کمی این متفاوت زمان ما این برنامه را اجرا کنید. 1150 00:54:25,190 --> 00:54:28,010 اما ما به این آدرس بروید که ما می دانیم هنوز هم وجود دارد 1151 00:54:28,010 --> 00:54:29,260 و ببینید چه چیزی وجود دارد. 1152 00:54:29,260 --> 00:54:35,640 1153 00:54:35,640 --> 00:54:37,110 >> بنابراین آن را گسل seg به نیست. 1154 00:54:37,110 --> 00:54:38,970 این اصلا چیزی به ما بدهد. 1155 00:54:38,970 --> 00:54:43,350 این ممکن است در واقع به ما چیزی، ما نه تنها می تواند آن را ببینید. 1156 00:54:43,350 --> 00:54:45,110 و این به این ایده می رود - 1157 00:54:45,110 --> 00:54:47,270 و ما در حال رفتن به دریافت بیش از حد به این، به این دلیل است که فراتر از این 1158 00:54:47,270 --> 00:54:48,460 دامنه این دوره. 1159 00:54:48,460 --> 00:54:51,260 اما ما در مورد اگر ما صحبت کردیم در اینجا، فراتر از مرزهای آرایه گذشت 1160 00:54:51,260 --> 00:54:54,890 1، ما ممکن است دچار مشکل شوید. 1161 00:54:54,890 --> 00:54:58,550 >> گاهی اوقات، هنگامی که شما درست کردن به 1، شما در حال انجام کاری اشتباه است، و شما 1162 00:54:58,550 --> 00:54:59,220 می تواند دچار مشکل دریافت کنید. 1163 00:54:59,220 --> 00:55:00,820 اما شما همیشه در دردسر. 1164 00:55:00,820 --> 00:55:05,170 این بستگی دارد که چه مقدار از یک چیز بد شما را، شما در حال رفتن به در دردسر. 1165 00:55:05,170 --> 00:55:07,790 که است که می گویند، درهم و برهم است با کد شما. 1166 00:55:07,790 --> 00:55:12,080 اما این است که می گویند، این برنامه را نمی همیشه ترک، حتی اگر شما جایی بروید 1167 00:55:12,080 --> 00:55:14,130 شما قرار نیست برای رفتن. 1168 00:55:14,130 --> 00:55:18,170 >> یک مثال خوب از این است که، بسیاری از مردم در مشکل خود مجموعه 3، که 1169 00:55:18,170 --> 00:55:22,350 شد 15، چک نمی مرزهای هیئت مدیره. 1170 00:55:22,350 --> 00:55:25,860 بنابراین شما را به سمت چپ نگاه کرد، به نگاه سمت راست، نگاه به بالا، نگاه 1171 00:55:25,860 --> 00:55:27,000 به پایین. 1172 00:55:27,000 --> 00:55:31,540 اما شما بررسی نمی کنید اگر بالا در واقع قرار بود در هیئت مدیره باشد. 1173 00:55:31,540 --> 00:55:35,220 و بسیاری از افرادی که این کار را و تبدیل شده است که در برنامه های خود مشغول به کار 1174 00:55:35,220 --> 00:55:38,960 کاملا، چرا که در آن است که هیئت مدیره بود ذخیره شده در حافظه، اگر شما یکی رفت 1175 00:55:38,960 --> 00:55:42,300 در بالای آن و یا بررسی می شود که حافظه آدرس، هر چیزی وجود ندارد 1176 00:55:42,300 --> 00:55:44,870 به خصوص در مورد که وحشتناک، بنابراین برنامه شما نبود 1177 00:55:44,870 --> 00:55:45,970 رفتن به فریاد زدن در شما. 1178 00:55:45,970 --> 00:55:48,870 >> اما ما هنوز هم را خاموش امتیاز اگر شما چک کنید که، به خاطر شما 1179 00:55:48,870 --> 00:55:50,850 انجام شد چیزی است که شما نبود قرار است انجام دهد، و شما می توانید از 1180 00:55:50,850 --> 00:55:51,860 بدست در مشکل. 1181 00:55:51,860 --> 00:55:54,040 شانس هستند، هر چند، شما احتمالا نمی. 1182 00:55:54,040 --> 00:55:57,790 پس این نشان می دهد که، بله، ما هنوز هم می تواند آن را به. 1183 00:55:57,790 --> 00:55:59,010 و ما در حال رسیدن در مشکل در این مورد. 1184 00:55:59,010 --> 00:56:04,000 اگر ما سعی در خواندن 100 حرف بعدی، ما می خواهم 1185 00:56:04,000 --> 00:56:06,000 احتمالا در مشکل دریافت کنید. 1186 00:56:06,000 --> 00:56:09,400 و شما می توانید کد خواندن 100 بعدی شخصیت اگر شما با انجام برخی می خواهند 1187 00:56:09,400 --> 00:56:10,110 نوع حلقه for. 1188 00:56:10,110 --> 00:56:10,850 آره. 1189 00:56:10,850 --> 00:56:16,250 >> STUDENT: از آنجا که ما قرار گرفتند که فضای ارزش واقعی، ما نه 1190 00:56:16,250 --> 00:56:17,050 در واقع قادر به دیدن هر چیزی باشد. 1191 00:56:17,050 --> 00:56:21,740 آیا باید آن را امتحان کنید و با تنظیم که برابر مانند C و یا چیزی؟ 1192 00:56:21,740 --> 00:56:22,640 >> JASON HIRSCHHORN: سؤال بسیار خوبی است. 1193 00:56:22,640 --> 00:56:25,340 چگونه می توانم که ارزش - 1194 00:56:25,340 --> 00:56:28,980 چه خط از کد را من در خط ارسال هفت به آنچه که شما گفت؟ 1195 00:56:28,980 --> 00:56:34,040 >> STUDENT: ستاره PTR برابر تک نقل قول ج تنها اعلان پایان. 1196 00:56:34,040 --> 00:56:36,970 >> JASON HIRSCHHORN: به طوری که قرار دادن یک شخصیت، ج، در آن محل، 1197 00:56:36,970 --> 00:56:40,200 چرا که باز هم آن ستاره به معنی به وجود دارد. 1198 00:56:40,200 --> 00:56:43,320 و وقتی که در سمت چپ استفاده عملگر انتساب، که برابر است با 1199 00:56:43,320 --> 00:56:47,270 ثبت نام، ما قصد داریم که برای دریافت مقدار بسیار به عنوان مجموعه ای که ارزش. 1200 00:56:47,270 --> 00:56:48,520 حالا اجازه دهید ببینیم که چه چیزی اتفاق می افتد. 1201 00:56:48,520 --> 00:56:54,700 1202 00:56:54,700 --> 00:56:56,770 >> ما چیزی وجود دارد و آنجا بود. 1203 00:56:56,770 --> 00:56:58,000 ما به نام آزاد است. 1204 00:56:58,000 --> 00:57:00,100 برخی از فایل های احتمالا رخ داده است در پشته. 1205 00:57:00,100 --> 00:57:01,890 پس از آن وجود دارد دیگر. 1206 00:57:01,890 --> 00:57:07,440 اما باز هم، ما نمی در مشکل برای رفتن وجود دارد. 1207 00:57:07,440 --> 00:57:10,260 >> من انجام این کار در کد برای نشان دادن که بسیاری از این 1208 00:57:10,260 --> 00:57:12,410 سوالات است که شما داشته باشد، آنها واقعا جالب 1209 00:57:12,410 --> 00:57:13,650 پاسخ بسیاری از زمان. 1210 00:57:13,650 --> 00:57:15,260 و آنها سوالات واقعا خوب است. 1211 00:57:15,260 --> 00:57:19,010 و شما می توانید آنها را در شکل خود اگر خود را، به عنوان مثال، 1212 00:57:19,010 --> 00:57:19,990 ما در بخش نیست. 1213 00:57:19,990 --> 00:57:20,940 آره. 1214 00:57:20,940 --> 00:57:24,430 >> STUDENT: از آنجا که شما در حال ارسال نشده است اشاره گر در هر نقطه، شما به نیاز 1215 00:57:24,430 --> 00:57:26,530 استفاده از malloc؟ 1216 00:57:26,530 --> 00:57:28,400 >> JASON HIRSCHHORN: پس این می رود به سوال اولیه خود را. 1217 00:57:28,400 --> 00:57:28,620 [؟ ؟] 1218 00:57:28,620 --> 00:57:29,980 آیا این فقط یک متغیر محلی؟ 1219 00:57:29,980 --> 00:57:32,280 Malloc اینجا این است که قانع کننده نیست. 1220 00:57:32,280 --> 00:57:35,260 استفاده از malloc در اینجا نیست که قانع کننده به خاطر آن 1221 00:57:35,260 --> 00:57:36,500 فقط یک متغیر محلی است. 1222 00:57:36,500 --> 00:57:40,970 >> STUDENT: بنابراین می توانید انجام دهید کاراکتر PTR ستاره برابر است با سلام؟ 1223 00:57:40,970 --> 00:57:41,400 >> JASON HIRSCHHORN: اوه. 1224 00:57:41,400 --> 00:57:43,300 بنابراین ما در حال حاضر رفتن به عقب بر گردیم به سوال اولیه خود را. 1225 00:57:43,300 --> 00:57:46,885 من فکر می کنم شما را راضی نمی کند با پاسخ من. 1226 00:57:46,885 --> 00:57:48,220 OK؟ 1227 00:57:48,220 --> 00:57:49,226 که می خواهم؟ 1228 00:57:49,226 --> 00:57:49,682 >> STUDENT: آره. 1229 00:57:49,682 --> 00:57:50,932 صبر کنید. 1230 00:57:50,932 --> 00:57:54,090 1231 00:57:54,090 --> 00:57:57,850 >> JASON HIRSCHHORN: و که در آن آیا می خواهید چاپ کنید؟ 1232 00:57:57,850 --> 00:58:00,026 بنابراین ما به نسخه قابل چاپ کردن یک رشته که می خواهم؟ 1233 00:58:00,026 --> 00:58:06,380 1234 00:58:06,380 --> 00:58:07,630 >> STUDENT: جالب. 1235 00:58:07,630 --> 00:58:09,900 1236 00:58:09,900 --> 00:58:14,285 >> JASON HIRSCHHORN: پس این می گوید این استدلال است که نوع شخصیت. 1237 00:58:14,285 --> 00:58:17,200 1238 00:58:17,200 --> 00:58:18,620 بنابراین این باید یک شخصیت باشد. 1239 00:58:18,620 --> 00:58:25,170 1240 00:58:25,170 --> 00:58:26,280 >> STUDENT: فقط یکی از اولین طول می کشد. 1241 00:58:26,280 --> 00:58:28,610 >> JASON HIRSCHHORN: پس این آن چیزی است که قبل از من گفت. 1242 00:58:28,610 --> 00:58:34,240 من می خواهم گفت، آن را ذخیره سازی نیست رشته در داخل اشاره گر متغیر است. 1243 00:58:34,240 --> 00:58:35,120 این ذخیره سازی - 1244 00:58:35,120 --> 00:58:36,350 >> STUDENT: مقدار اول از رشته است. 1245 00:58:36,350 --> 00:58:40,810 >> JASON HIRSCHHORN: آدرس ارزش اول رشته. 1246 00:58:40,810 --> 00:58:46,940 اگر قرار بود به نسخه قابل چاپ کردن این، ما هستیم گرفتن مقدار در داخل اشاره گر. 1247 00:58:46,940 --> 00:58:51,005 و خواهیم دید که در آن است، در واقع، یک آدرس حافظه است. 1248 00:58:51,005 --> 00:58:53,595 1249 00:58:53,595 --> 00:58:56,440 >> آیا این را حس؟ 1250 00:58:56,440 --> 00:58:56,940 متأسفم. 1251 00:58:56,940 --> 00:58:58,996 صبر کنید، به این که پاسخ شما سوال، هر چند؟ 1252 00:58:58,996 --> 00:58:59,790 >> STUDENT: آره. 1253 00:58:59,790 --> 00:59:05,830 >> JASON HIRSCHHORN: این خط از کد است ایجاد یک رشته و پس از آن دیگر 1254 00:59:05,830 --> 00:59:09,115 اشاره گر متغیر است که اشاره به این رشته، که آرایه. 1255 00:59:09,115 --> 00:59:14,320 1256 00:59:14,320 --> 00:59:14,980 آره. 1257 00:59:14,980 --> 00:59:19,200 >> STUDENT: بنابراین اگر یک حافظه ما رفت رسیدگی به بیشتر، که ما می توانید از ساعت؟ 1258 00:59:19,200 --> 00:59:21,990 1259 00:59:21,990 --> 00:59:23,150 آن را به عنوان یک رشته ذخیره می شود؟ 1260 00:59:23,150 --> 00:59:24,400 >> JASON HIRSCHHORN: مانند، ما - 1261 00:59:24,400 --> 00:59:28,540 1262 00:59:28,540 --> 00:59:30,790 بنابراین این ارزش را به انجام می باشد. 1263 00:59:30,790 --> 00:59:33,780 این حساب نقطه، که شما بچه ها است قبل را دیده اند و باید باشد 1264 00:59:33,780 --> 00:59:35,550 نسبتا راحت با. 1265 00:59:35,550 --> 00:59:36,905 این شبیه به نوشتن است - 1266 00:59:36,905 --> 00:59:41,980 1267 00:59:41,980 --> 00:59:46,350 اگر ما برای نوشتن این خط از کد، ما قبل از نماد آرایه ای دیده می شود. 1268 00:59:46,350 --> 00:59:55,900 این باید ما را دوم را ارزش در این آرایه، ساعت. 1269 00:59:55,900 --> 01:00:05,010 >> اگر ما این را انجام داد، باید این را به من بدهید ما ارزش دوم در آرایه. 1270 01:00:05,010 --> 01:00:08,320 از آنجا که در حال رفتن به حافظه آدرس اولین چیزی، اما 1271 01:00:08,320 --> 01:00:10,530 آدرس حافظه از چیزی که بیش از. 1272 01:00:10,530 --> 01:00:14,360 و پس از آن ارجاع میدهد عملگر ستاره که اشاره گر. 1273 01:00:14,360 --> 01:00:16,940 و دوباره، اجازه دهید را ببینید. 1274 01:00:16,940 --> 01:00:18,664 ما دوباره در ساعت. 1275 01:00:18,664 --> 01:00:20,980 >> STUDENT: دقیقا چه می کند dereference چیست؟ 1276 01:00:20,980 --> 01:00:23,650 >> JASON HIRSCHHORN: Dereference یک کلمه فانتزی برای رفتن به است. 1277 01:00:23,650 --> 01:00:26,390 برو به که و آنچه را وجود دارد است به dereference یک اشاره گر. 1278 01:00:26,390 --> 01:00:28,240 این فقط یک کلمه برای علاقه داشتن به آن است. 1279 01:00:28,240 --> 01:00:29,986 >> STUDENT: اگر ما به چاپ می خواست تمام رشته، می تواند ما 1280 01:00:29,986 --> 01:00:31,930 انجام اشاره گر علامت؟ 1281 01:00:31,930 --> 01:00:33,490 >> JASON HIRSCHHORN: OK، ما رفتن به توقف در اینجا. 1282 01:00:33,490 --> 01:00:35,480 ما می خواهیم در اینجا به پایان. 1283 01:00:35,480 --> 01:00:41,760 علامت به شما می دهد آدرس یک محل، تا زمانی که شما باید انجام دهید استفاده از کاراکتر & از 1284 01:00:41,760 --> 01:00:44,080 یک متغیر، آن را به شما می دهد آدرس که در آن است که متغیر ذخیره شده است. 1285 01:00:44,080 --> 01:00:48,580 اشاره گر علامت را به شما می دهد آدرس PTR که در آن PTR است در حافظه است. 1286 01:00:48,580 --> 01:00:50,140 >> ما قصد داریم به رفتن در با این مثال. 1287 01:00:50,140 --> 01:00:52,640 شما می توانید چهره ای از این همه چیز را در خود. 1288 01:00:52,640 --> 01:00:55,740 اما باز هم، این حتی ممکن است verging شود کمی فراتر از آنچه که شما نیاز دارید که برای دانم 1289 01:00:55,740 --> 01:00:58,000 دامنه این میان مدت - 1290 01:00:58,000 --> 01:00:59,070 و یا این مسابقه، نه. 1291 01:00:59,070 --> 01:01:00,270 متأسفم. 1292 01:01:00,270 --> 01:01:03,770 >> ما می خواهیم به حرکت در تاریخ، چون من خواهم به انجام یک مشکل برنامه نویسی 1293 01:01:03,770 --> 01:01:05,100 قبل از زمان است. 1294 01:01:05,100 --> 01:01:09,340 و ما در حال رفتن به کد چیزی است که من فکر می کنم است که قانع کننده بسیاری از این 1295 01:01:09,340 --> 01:01:11,020 نمونه، atoi. 1296 01:01:11,020 --> 01:01:14,520 بنابراین این یک سوال در بود مسابقه دو سال پیش. 1297 01:01:14,520 --> 01:01:17,810 و من آن را در هیئت مدیره در اینجا. 1298 01:01:17,810 --> 01:01:20,680 >> مردم در مسابقه خواسته شد - 1299 01:01:20,680 --> 01:01:23,640 آنها tesxt کمی بیشتر در داده شد سوال، اما من حذف 1300 01:01:23,640 --> 01:01:26,640 متن، چون غیر ضروری بود برای اهداف ما در حال حاضر. 1301 01:01:26,640 --> 01:01:29,180 این فقط برخی از زمینه بود در چه atoi بود. 1302 01:01:29,180 --> 01:01:31,425 اما همه شما می دانیم و بسیار آشنا با atoi. 1303 01:01:31,425 --> 01:01:35,620 >> من پیشنهاد می کنم از این کد در یک ورق کاغذ. 1304 01:01:35,620 --> 01:01:39,310 من هم به شما پیشنهاد استفاده از استراتژی که ما بیش از رفته 1305 01:01:39,310 --> 01:01:41,040 بسیاری در بخش ما. 1306 01:01:41,040 --> 01:01:44,130 اول، مطمئن شوید که شما را در درک چه atoi را انجام می دهند. 1307 01:01:44,130 --> 01:01:47,580 قرعه کشی یک عکس و یا آمد تا با برخی از تصویر ذهنی از آن را در سر خود را. 1308 01:01:47,580 --> 01:01:51,120 بعدی، نوشتن شبه دستور العمل برای این. 1309 01:01:51,120 --> 01:01:53,120 در مسابقه، اگر همه شما است شبه، حداقل شما 1310 01:01:53,120 --> 01:01:54,550 قرار دادن چیزی است. 1311 01:01:54,550 --> 01:02:00,070 و پس از آن نقشه که شبه بر روی C. اگر شما یک چک را در خود 1312 01:02:00,070 --> 01:02:03,760 شبه، مانند چک کنید اگر چیزی است 1، که نقشه ها بر روی اگر 1313 01:02:03,760 --> 01:02:05,750 شرایط و غیره. 1314 01:02:05,750 --> 01:02:07,850 و در نهایت، کد برنامه در C. 1315 01:02:07,850 --> 01:02:15,000 >> بنابراین بازگشت به atoi و پنج دقیقه کد این در یک ورق 1316 01:02:15,000 --> 01:02:19,480 مقاله، که احتمالا در مورد مقدار زمان شما می توانید در را 1317 01:02:19,480 --> 01:02:21,260 مسابقه به atoi کد. 1318 01:02:21,260 --> 01:02:27,060 پنج تا 15 دقیقه، پنج تا 12، پنج تا 10 دقیقه، در مورد میزان 1319 01:02:27,060 --> 01:02:30,150 زمانی که شما می خواهم در این صرف سوال در مسابقه. 1320 01:02:30,150 --> 01:02:31,670 پس از پنج دقیقه طول می کشد در حال حاضر، لطفا. 1321 01:02:31,670 --> 01:02:35,957 و اگر شما هر گونه سوال، بالا بردن دست خود را و من در اطراف شما می آیند. 1322 01:02:35,957 --> 01:06:39,570 1323 01:06:39,570 --> 01:06:41,066 >> [CONVERSATIONS SIDE] 1324 01:06:41,066 --> 01:08:35,279 1325 01:08:35,279 --> 01:08:37,580 >> JASON HIRSCHHORN: OK، بنابراین که پنج دقیقه بود. 1326 01:08:37,580 --> 01:08:39,880 که احتمالا در مورد مقدار بود زمان شما می خواهم که در آن صرف در مسابقه، 1327 01:08:39,880 --> 01:08:42,120 شاید در پایان کم از آن زمان. 1328 01:08:42,120 --> 01:08:44,010 ما در یک بیت روکش. 1329 01:08:44,010 --> 01:08:45,740 اجازه دهید ما شروع به برنامه نویسی در این. 1330 01:08:45,740 --> 01:08:49,479 و اگر ما به تمام راه را از طریق می کنید، پاسخ به این و این 1331 01:08:49,479 --> 01:08:54,189 سوال مسابقه در دسترس هستند، دوباره، پاییز 2011 در زمانی که این سوال است 1332 01:08:54,189 --> 01:08:54,913 در مسابقه ظاهر شد. 1333 01:08:54,913 --> 01:08:57,830 >> و آن را به ارزش هشت امتیاز بود در مسابقه پس از آن. 1334 01:08:57,830 --> 01:09:01,140 هشت نقطه در پایان بالا از مقدار از نقاط چیزی ارزش است. 1335 01:09:01,140 --> 01:09:04,790 اکثر سوالات در محدوده از یک تا شش امتیاز. 1336 01:09:04,790 --> 01:09:08,500 پس این است که بیشتر به چالش کشیدن سوال، برای مطمئن. 1337 01:09:08,500 --> 01:09:09,750 آیا می توانم کسی به من آغاز شده؟ 1338 01:09:09,750 --> 01:09:13,260 1339 01:09:13,260 --> 01:09:15,380 >> به طور کلی، آنچه می خواهیم به می خواهید با این 1340 01:09:15,380 --> 01:09:17,550 تابع atoi، منطقی؟ 1341 01:09:17,550 --> 01:09:19,569 ما چه می خواهیم کاری انجام دهید؟ 1342 01:09:19,569 --> 01:09:22,279 بنابراین ما در حال رفتن به ارسال برخی از شبه. 1343 01:09:22,279 --> 01:09:24,090 >> STUDENT: تبدیل کاراکتر را به اعداد صحیح. 1344 01:09:24,090 --> 01:09:26,700 >> JASON HIRSCHHORN: تبدیل کاراکتر را به اعداد صحیح. 1345 01:09:26,700 --> 01:09:27,479 OK. 1346 01:09:27,479 --> 01:09:30,870 پس چگونه بسیاری از شخصیت های ما رفتن به نیاز به از طریق رفتن؟ 1347 01:09:30,870 --> 01:09:32,295 >> STUDENT: همه آنها. 1348 01:09:32,295 --> 01:09:34,100 >> STUDENT: همه شخصیت ها در رشته. 1349 01:09:34,100 --> 01:09:35,540 >> JASON HIRSCHHORN: همه کاراکتر در رشته. 1350 01:09:35,540 --> 01:09:42,180 بنابراین اگر ما می خواستیم از طریق هر بروید کاراکتر در یک رشته، چه چیزی است 1351 01:09:42,180 --> 01:09:44,560 در C دیده ایم که اجازه داده است ما را از طریق هر بروید 1352 01:09:44,560 --> 01:09:45,939 کاراکتر در یک رشته؟ 1353 01:09:45,939 --> 01:09:46,819 >> دانش آموزان: برای حلقه. 1354 01:09:46,819 --> 01:09:48,069 >> JASON HIRSCHHORN: A برای حلقه. 1355 01:09:48,069 --> 01:09:52,020 1356 01:09:52,020 --> 01:09:55,330 بنابراین ما قصد داریم به حلقه را از طریق هر کاراکتر در ثانیه. 1357 01:09:55,330 --> 01:10:00,940 >> پس چه می خواهیم می خواهید انجام دهید هنگامی که ما یک شخصیت خاص؟ 1358 01:10:00,940 --> 01:10:02,480 می گویند ما در حال تصویب شدن 90. 1359 01:10:02,480 --> 01:10:03,460 ما باید با 9. 1360 01:10:03,460 --> 01:10:04,240 این یک شخصیت است. 1361 01:10:04,240 --> 01:10:07,440 چه ما می خواهیم انجام دهیم با که شخصیت 9؟ 1362 01:10:07,440 --> 01:10:10,082 >> STUDENT: تفریق آن را از شخصیت 0؟ 1363 01:10:10,082 --> 01:10:11,860 >> STUDENT: اضافه کردن 0؟ 1364 01:10:11,860 --> 01:10:13,350 >> JASON HIRSCHHORN: تفریق آن را از شخصیت 0؟ 1365 01:10:13,350 --> 01:10:13,800 >> STUDENT: آره. 1366 01:10:13,800 --> 01:10:15,573 >> JASON HIRSCHHORN: چرا شما می خواهید به انجام این کار؟ 1367 01:10:15,573 --> 01:10:16,560 >> STUDENT: [نامفهوم] 1368 01:10:16,560 --> 01:10:17,010 ارزش. 1369 01:10:17,010 --> 01:10:18,380 ارزش بین المللی آن است. 1370 01:10:18,380 --> 01:10:21,580 >> JASON HIRSCHHORN: OK، بنابراین ما را به شخصیت 9، آن کم از 1371 01:10:21,580 --> 01:10:25,820 شخصیت 0 برای دریافت عدد صحیح واقعی 9. 1372 01:10:25,820 --> 01:10:27,070 شیرین. 1373 01:10:27,070 --> 01:10:31,255 1374 01:10:31,255 --> 01:10:37,000 و چگونه شما می دانید که شخصیت 9 منهای 0 کاراکتر 9 است؟ 1375 01:10:37,000 --> 01:10:39,222 چه نمودار به شما نگاه؟ 1376 01:10:39,222 --> 01:10:43,130 >> STUDENT: منطقا نه وجود دارد مکان های بین 9 و 0. 1377 01:10:43,130 --> 01:10:44,620 یا شما می توانید در جدول ASCII است. 1378 01:10:44,620 --> 01:10:45,120 >> JASON HIRSCHHORN: جدول ASCII. 1379 01:10:45,120 --> 01:10:46,490 اما بله، شما درست نیز هست. 1380 01:10:46,490 --> 01:10:47,780 بنابراین ما تفریق 0. 1381 01:10:47,780 --> 01:10:49,010 بنابراین در حال حاضر ما باید عدد صحیح 9. 1382 01:10:49,010 --> 01:10:49,970 و ما چه می خواهید با که؟ 1383 01:10:49,970 --> 01:10:54,970 اگر ما به 90، به عدد صحیح اول است ما، آنچه که ما می خواهیم انجام دهیم؟ 1384 01:10:54,970 --> 01:10:58,180 >> STUDENT: من می خواهم در یک عدد صحیح موقت قرار داده آرایه، سپس ریاضی به آن 1385 01:10:58,180 --> 01:11:02,088 بعد آن را به پایان. 1386 01:11:02,088 --> 01:11:03,020 >> JASON HIRSCHHORN: OK. 1387 01:11:03,020 --> 01:11:06,990 >> STUDENT: شما می توانید در پایان شروع آرایه و سپس حرکت به جلو تا 1388 01:11:06,990 --> 01:11:10,350 که هر بار که شما حرکت رو به جلو، شما آن را با 10 ضرب. 1389 01:11:10,350 --> 01:11:10,830 >> JASON HIRSCHHORN: OK. 1390 01:11:10,830 --> 01:11:12,250 به نظر می رسد بسیار ایده فوتی و فوری. 1391 01:11:12,250 --> 01:11:16,040 ما می توانیم در پایان آرایه های ما شروع، و ما می توانیم strleng استفاده کنید. 1392 01:11:16,040 --> 01:11:17,030 ما می توانیم strleng در اینجا استفاده کنید. 1393 01:11:17,030 --> 01:11:18,870 ما طول رشته ما را دریافت کنید. 1394 01:11:18,870 --> 01:11:20,100 ما در پایان شروع می شود. 1395 01:11:20,100 --> 01:11:29,170 و + یکی از اولین، ما فقط آن است که عدد صحیح، و شاید ما مانند ایجاد 1396 01:11:29,170 --> 01:11:32,270 متغیر عدد صحیح جدید تا بالا که در آن ما همه چیز را ذخیره سازی. 1397 01:11:32,270 --> 01:11:37,340 بنابراین ما از هر کاراکتر در از حلقه از عقب به جلو، ما تفریق 0، و 1398 01:11:37,340 --> 01:11:42,790 پس ما آن را، و بسته به که در آن است، ما آن را ضرب 1399 01:11:42,790 --> 01:11:45,860 با قدرت 10. 1400 01:11:45,860 --> 01:11:50,644 از آنجا که یکی از اولین، چه کار می کنیم ضرب شخصیت سمت راست توسط؟ 1401 01:11:50,644 --> 01:11:51,440 >> STUDENT: 10 به 0. 1402 01:11:51,440 --> 01:11:53,170 >> JASON HIRSCHHORN: 10 به 0. 1403 01:11:53,170 --> 01:11:56,010 چه ما دوم ضرب سمت راست ترین کاراکتر های؟ 1404 01:11:56,010 --> 01:11:57,450 >> STUDENT: [نامفهوم]. 1405 01:11:57,450 --> 01:11:57,960 >> JASON HIRSCHHORN: چه؟ 1406 01:11:57,960 --> 01:11:59,150 >> STUDENT: 10 به 1. 1407 01:11:59,150 --> 01:12:00,420 >> JASON HIRSCHHORN: 10 به 1. 1408 01:12:00,420 --> 01:12:03,754 شخصیت سوم سمت راست؟ 1409 01:12:03,754 --> 01:12:04,580 >> STUDENT: 10 به 2. 1410 01:12:04,580 --> 01:12:05,350 >> JASON HIRSCHHORN: 10 به 2. 1411 01:12:05,350 --> 01:12:07,200 >> STUDENT: متاسفم، من نمی فهمم چیزی است که ما در اینجا انجام می دهند. 1412 01:12:07,200 --> 01:12:08,640 >> JASON HIRSCHHORN: OK، اجازه بازگشت و پس از آن. 1413 01:12:08,640 --> 01:12:12,500 بنابراین ما برای به دست آوردن گذشت در یک رشته است. 1414 01:12:12,500 --> 01:12:14,470 از آنجا که ما در حال نوشتن atoi. 1415 01:12:14,470 --> 01:12:15,260 بنابراین ما در یک رشته به تصویب رسید. 1416 01:12:15,260 --> 01:12:17,640 می گویند ما در حال تصویب شدن در رشته 90. 1417 01:12:17,640 --> 01:12:19,930 >> اولین چیزی که ما قصد داریم برای انجام تنظیم شده است یک متغیر عدد صحیح جدیدی است که ما 1418 01:12:19,930 --> 01:12:22,150 فقط رفتن برای ایجاد به عنوان عدد صحیح جدید ما است. 1419 01:12:22,150 --> 01:12:24,630 این چیزی است که ما قصد داریم به بازگشت در پایان. 1420 01:12:24,630 --> 01:12:30,110 ما باید از طریق هر شخصیت در به رشته چرا که ما تعیین کرده ایم 1421 01:12:30,110 --> 01:12:34,430 که ما نیاز به لمس هر یک و سپس آن را به عدد صحیح جدید ما اضافه کنید. 1422 01:12:34,430 --> 01:12:36,330 >> اما ما نمی توان آن را به عنوان یک عدد اضافه کنید. 1423 01:12:36,330 --> 01:12:38,270 ما نمی توانیم فقط 9 را و اضافه کردن 9 به عدد صحیح است. 1424 01:12:38,270 --> 01:12:40,560 آنچه در محل بستگی دارد آن را در رشته است. 1425 01:12:40,560 --> 01:12:42,960 ما در حال رفتن به نیاز به چند برابر آن را با قدرت 10. 1426 01:12:42,960 --> 01:12:45,580 از آنجا که که چگونه 10 آثار پایه. 1427 01:12:45,580 --> 01:12:49,050 >> بنابراین ما در حال رفتن به دریافت واقعی شخصیت یا عدد صحیح واقعی 1428 01:12:49,050 --> 01:12:53,860 تعداد، با کم کردن شخصیت 0 از شخصیت 9 که ما با انجام 1429 01:12:53,860 --> 01:12:57,560 کم کردن شخصیت سرمایه از هر شخصیت ما در یکی از حال 1430 01:12:57,560 --> 01:12:58,120 این مشکلات. 1431 01:12:58,120 --> 01:13:04,190 پس ما در واقع یک شماره را از 0 به 9 به عنوان یک عدد حقیقی را نجات داد، و ما 1432 01:13:04,190 --> 01:13:07,590 آن را با قدرت 10 بسته به ضرب در جایی که ما در این رشته می باشد. 1433 01:13:07,590 --> 01:13:19,430 1434 01:13:19,430 --> 01:13:22,575 و پس از آن ما قصد داریم به آن اضافه برگشت به متغیر عدد صحیح جدید ما است. 1435 01:13:22,575 --> 01:13:32,840 1436 01:13:32,840 --> 01:13:37,890 >> پس چه این را می خواهم نگاه شود - ما در اینجا رسم است. 1437 01:13:37,890 --> 01:13:40,086 اگر ما در رشته 90 گذشت - 1438 01:13:40,086 --> 01:13:41,336 >> STUDENT: [نامفهوم]. 1439 01:13:41,336 --> 01:13:43,190 1440 01:13:43,190 --> 01:13:45,540 >> JASON HIRSCHHORN: اما atoi طول می کشد یک رشته است. 1441 01:13:45,540 --> 01:13:46,350 بنابراین ما قصد داریم از طریق رفتن برگزاری. 1442 01:13:46,350 --> 01:13:49,900 ما را در 90 به تصویب رسید. 1443 01:13:49,900 --> 01:13:51,540 ما را از پشت به جلو بروید. 1444 01:13:51,540 --> 01:13:53,920 ما را به 0. 1445 01:13:53,920 --> 01:13:55,080 >> STUDENT: من متاسفم. 1446 01:13:55,080 --> 01:13:55,880 شاید این احمقانه است. 1447 01:13:55,880 --> 01:13:59,440 اگر ما در حال رسیدن به تصویب رسید در یک رشته، چرا 90 چیزی است که ما هستیم 1448 01:13:59,440 --> 01:14:00,260 گرفتن گذشت در؟ 1449 01:14:00,260 --> 01:14:03,160 از آنجا که 90 یک عدد صحیح است. 1450 01:14:03,160 --> 01:14:06,820 >> JASON HIRSCHHORN: از آنجا که atoi طول می کشد رشته و آن را به عدد صحیح 1451 01:14:06,820 --> 01:14:08,320 نمایندگی که رشته است. 1452 01:14:08,320 --> 01:14:13,650 اما رشته 90 است که عدد صحیح نمی 90 یا تعداد 90. 1453 01:14:13,650 --> 01:14:17,920 رشته 90 مجموعه ای از دو یا است سه حرف، نه، 9 1454 01:14:17,920 --> 01:14:22,740 شخصیت، 0 شخصیت، و بک اسلش 0 شخصیت. 1455 01:14:22,740 --> 01:14:26,260 >> و ما در حال نوشتن atoi دلیل، برای به عنوان مثال، هنگامی که شما را از دستور 1456 01:14:26,260 --> 01:14:30,230 خط استدلال، و آن را در ذخیره argv را، آن را به عنوان یک رشته را نجات داد. 1457 01:14:30,230 --> 01:14:32,940 اما اگر شما می خواهید آن را به عنوان یک عدد، شما نیاز به تبدیل آن به یک 1458 01:14:32,940 --> 01:14:34,700 عدد صحیح واقعی. 1459 01:14:34,700 --> 01:14:37,210 که ما یکی از مجموعه مشکل ما. 1460 01:14:37,210 --> 01:14:38,800 که ما آن را در یک عدد بود از مجموعه مشکل ما. 1461 01:14:38,800 --> 01:14:41,690 هر کس که در زمان یک عدد صحیح به عنوان آرگومان خط فرمان. 1462 01:14:41,690 --> 01:14:46,490 به همین دلیل تابع atoi ما یک رشته طول می کشد. 1463 01:14:46,490 --> 01:14:51,910 >> بنابراین دوباره، در مثال ما در اینجا، ما هستیم رفتن به یکی از آخرین. 1464 01:14:51,910 --> 01:14:55,050 ما قصد داریم به تفریق شخصیت 0 از آن، چرا که شخصیت 0 1465 01:14:55,050 --> 01:14:58,810 کم های شخصیت 0 به شما می دهد تعداد واقعی 0، با توجه به 1466 01:14:58,810 --> 01:15:00,950 ریاضی ASCII است که ما انجام می دهیم. 1467 01:15:00,950 --> 01:15:04,870 >> از آنجا که شخصیت ها به عنوان نمایندگی متفاوت تر از واقعی خود را - 1468 01:15:04,870 --> 01:15:08,830 شخصیت، به عنوان مثال، حروف کوچک 97 است. 1469 01:15:08,830 --> 01:15:10,260 این نه - اوه! 1470 01:15:10,260 --> 01:15:13,290 این هر آنچه شما انتظار ندارید آن را به، 0، به عنوان مثال. 1471 01:15:13,290 --> 01:15:16,200 بنابراین شما مجبور به تفریق شخصیت به دریافت 0. 1472 01:15:16,200 --> 01:15:18,950 >> بنابراین ما قصد داریم برای انجام این کار در اینجا برای به دست آوردن تعداد واقعی. 1473 01:15:18,950 --> 01:15:22,560 و پس از آن ما می رویم به آن ضرب قدرت 10 بسته به جایی که آن را به 1474 01:15:22,560 --> 01:15:27,030 در رشته، و پس از آن که و اضافه کردن آن به دارنده جای ما 1475 01:15:27,030 --> 01:15:32,520 متغیر بنابراین ما می توانیم آمد تا با عدد صحیح جدیدی نهایی ما. 1476 01:15:32,520 --> 01:15:35,080 آیا این را حس می کند برای همه؟ 1477 01:15:35,080 --> 01:15:37,730 >> بنابراین ما در حال به کد این در حال حاضر، چون ما هستیم 1478 01:15:37,730 --> 01:15:38,830 گرفتن در زمان کوتاه. 1479 01:15:38,830 --> 01:15:40,860 من برای زمان بندی که عذرخواهی می کنیم. 1480 01:15:40,860 --> 01:15:44,620 اما این چیزی است که، امیدوارم، شما را قادر به انجام در مسابقه - در 1481 01:15:44,620 --> 01:15:47,710 دست کم، این شبه نوشته شده است. 1482 01:15:47,710 --> 01:15:50,840 >> و سپس، اگر ما برای نوشتن شبه، در واقع، ما می تواند این کار را انجام 1483 01:15:50,840 --> 01:15:51,490 بسیار به سرعت. 1484 01:15:51,490 --> 01:15:55,230 هر خط از نظر ما ما نوشت در اینجا در مورد ترجمه 1485 01:15:55,230 --> 01:15:56,970 یک خط کد C. 1486 01:15:56,970 --> 01:16:01,780 اعلان یک متغیر جدید، نوشتن یک حلقه، برخی از تفریق، برخی از 1487 01:16:01,780 --> 01:16:07,070 ضرب، و برخی از انتساب. 1488 01:16:07,070 --> 01:16:09,020 ما احتمالا می خواهم همچنین می خواهم ارسال یک خط بازگشت. 1489 01:16:09,020 --> 01:16:12,040 ما همچنین در صورت تمایل برای قرار دادن برخی از چک در اینجا. 1490 01:16:12,040 --> 01:16:12,655 آره. 1491 01:16:12,655 --> 01:16:15,720 >> STUDENT: بنابراین می توان درمان به عنوان رشته واقعی؟ 1492 01:16:15,720 --> 01:16:18,730 از آنجا که من می دانم که آن را فقط یک آدرس است. 1493 01:16:18,730 --> 01:16:22,090 مانند، چگونه می خواهید دریافت که طول رشته در حال عبور از؟ 1494 01:16:22,090 --> 01:16:25,310 >> JASON HIRSCHHORN: پس چگونه بود طول یک رشته؟ 1495 01:16:25,310 --> 01:16:25,830 Strlen. 1496 01:16:25,830 --> 01:16:26,660 >> STUDENT: strlen، آره. 1497 01:16:26,660 --> 01:16:30,550 اما می تواند شما را به عنوان استدلال برای که؟ 1498 01:16:30,550 --> 01:16:34,620 >> JASON HIRSCHHORN: پس strlen یک ستاره کاراکتر طول می کشد. 1499 01:16:34,620 --> 01:16:38,090 و به دنبال آن ستاره کاراکتر، و آن را نگه می دارد شمارش تا زمانی که آن را به یک می شود 1500 01:16:38,090 --> 01:16:41,865 بک اسلش 0. strlen در واقع یکی از برنامه های دیگر ما 1501 01:16:41,865 --> 01:16:42,850 رفتن به کد شد. 1502 01:16:42,850 --> 01:16:44,560 این یکی خوب یکی دیگر از کد است. 1503 01:16:44,560 --> 01:16:47,270 این یکی کمی آسان تر است، چرا که اگر شما در حال رفتن به در مورد آن فکر می کنم 1504 01:16:47,270 --> 01:16:47,830 مفهومی - 1505 01:16:47,830 --> 01:16:51,620 من فقط آن را گفت: با صدای بلند - strlen شرح زیر است یک اشاره گر نگه می دارد و رفتن و 1506 01:16:51,620 --> 01:16:54,210 شمارش و پیگیری تا شما یک بک اسلش 0 برسد. 1507 01:16:54,210 --> 01:16:56,530 >> STUDENT: OK، آن را کردم. 1508 01:16:56,530 --> 01:17:00,200 >> JASON HIRSCHHORN: پس بهترین از شانس در مسابقه 0 فردا. 1509 01:17:00,200 --> 01:17:03,170 اگر شما هر گونه سوال، من خارج بعد از این باشد. 1510 01:17:03,170 --> 01:17:05,610 در صورت تمایل به من ایمیل. 1511 01:17:05,610 --> 01:17:08,480 دسترسی به TF خود را اگر شما در بخش من، یا من 1512 01:17:08,480 --> 01:17:10,005 ایمیل اگر شما آن را می خواهم. 1513 01:17:10,005 --> 01:17:13,140 >> اگر می خواهید از دمدمی مزاجی و فقط ارسال برای من ایمیل، یک ایمیل freakout، من 1514 01:17:13,140 --> 01:17:16,710 شما فرستاد، مثل، صورت خندان، و یا، مانند، یک شوخی یا چیزی. 1515 01:17:16,710 --> 01:17:18,190 بنابراین احساس رایگان به انجام این کار نیز هست. 1516 01:17:18,190 --> 01:17:20,750 موفق باشید دوباره، و من تمام هفته آینده را مشاهده می کنید. 1517 01:17:20,750 --> 01:17:23,435