>> [MUSIC پخش]
>> داوین: همه راست، بچه ها.
بنابراین این بررسی است برای اولین مسابقه.
آیا همه آماده مسابقه روز چهارشنبه؟
آلیسون: وو!
دانشجو: وو!
داوین: آره.
آلیسون: آره!
داوین: این مرد را آماده.
که مرد، دو دست، خوب.
بنابراین بررسی مسابقه امروز، این رفتن به حدود یک ساعت و نیم باشد.
ما قصد داریم تا بیش از همه مهم به مفاهیم شما باید برای مسابقه می دانند.
ما قصد داریم به برخی از برنامه نویسی به توسط نمونه دست، که در هر مسابقه می باشد.
و اگر سوالی دارید، در صورت تمایل به منظور بالا بردن دست و همه چیز خود را
که می خواهم.
خوب، تدارکات مورد مسابقه آنلاین.
بنابراین ما در حال به تقسیم مردم تا به اتاق های مختلف.
آن را در نام خود را بر اساس.
بنابراین اگر شما هر گونه سوال در مورد که در آن برای رفتن یا در مورد آنچه مادی است، مانند،
کلمه رسمی چه خبر است به در مسابقه شود، بررسی آنلاین.
و این همه تا به امروز است.
بنابراین اگر بدون سوال به وجود دارد با، ما قصد داریم به شروع آغاز خواهد شد.
و در اینجا آلیسون است.
>> [CLAPS]
>> آلیسون: OK، به لطف، راب.
قدردانی آن است.
داوین باید به این بدبختانه.
این لیست غیر کامل از است مباحث، مثل همیشه، به عنوان داوین فقط گفت.
مستندات مشورت آنلاین در مورد مسابقه صفر است.
اما این بسیار much-- آن را در برنامه درسی است
همه چیز ما تا کنون بیش از رفته است.
همه چیز در اینجا بازی منصفانه است، و همچنین هر چیز دیگری
که ممکن است در سخنرانی ذکر شده است.
>> بخش من، اینجا، است تنها بسیاری از بررسی.
یک زن و شوهر وجود دارد تمرینات است که شما ممکن است کار بر روی.
اما در بیشتر قسمت ها، ما واقعا می خواهید برای دریافت به داوین با آن کد
توسط تمرین های دست.
>> بنابراین من می خواهم از طریق این پرواز.
اگر شما هر گونه سوال، من را متوقف کند.
بالا بردن دست خود را.
قول می دهم من احتمالا به شما را ببینید.
اگر نه، فقط آن را موج اطراف.
من قصد دارم به صحبت کردن سریع می باشد.
من امیدوارم که هر کس با آن خوب.
>> OK، کلمه ای خاص، بدیهی است داوین را فراموش کرده به از طریق این اسلاید تلنگر.
[می خندد] شما را در دردسر مرد هستید.
بنابراین راهنمایی برای مسابقه صفر، تمرین برنامه نویسی بر روی کاغذ.
شما بچه ها در حال رفتن به گرفتن برخی از تمرین با آن در حال حاضر با داوین،
بنابراین شما نمی خواهد به طور کامل توسط خود باشد.
من فکر می کنم ما در واقع رفتن از طریق این دو تابع.
بنابراین شما به خوبی آماده وجود دارد.
>> با مجموعه مسائل خود آشنا باشد.
سوالات وجود داشته است در آزمونها قبلی
که از شما می خواهد، برای مثال، به کد تا به چیزی بسیار شبیه به ماریو.
به طوری که بسیار آشنا با مشکل شما، مجموعه ها، و همچنین
به عنوان سوال ما از شما می خواهیم در آغاز در فرم
که شما با پر کردن، خواهد شد خدمت شما خیلی خوب.
>> آیا یک مسابقه قبلی تحت محدودیت های زمانی.
این آزمونها طولانی است.
زمان می رود واقعا سریع است.
و اغلب، شما نمیدانند که چگونه سریع آن را تا زمانی که شما می رود در واقع
خود تحت آن محدودیت قرار داده است.
بنابراین اگر شما فقط می توانید حک کردن، شما می دانید، 75 دقیقه، یا امشب یا فردا
به یکی از این آزمونها تحت که شما را در شکل بسیار بهتر باشد.
>> و همچنین، ایجاد ورق مرجع خود.
به یاد داشته باشید، شما یک دریافت صفحه و پشت
به عنوان مرجع برای مسابقه خود را در روز چهارشنبه.
ایجاد که یک راه عالی برای مطالعه است.
هر چیزی را که شما با داشتن مشکل با شما می خواهید در وجود ندارد.
هر چیزی که TFS خود را داشته است، مانند، این است که واقعا مهم است.
شما باید این را بدانید، می شاید چیزهایی که شما باید در وجود دارد
اگر شما لازم نیست آنها را حفظ.
حتی اگر شما آنها را واقعا می دانیم خب، گاهی اوقات داشتن آن را در وجود دارد
نوع فقط راحتی را برای شما، که من می دانم آزمونها استرس زا می باشد.
بنابراین هر راحتی شما کمک می کند.
همه حق است، نیز، خواب و خوردن و دوست دارم همه چیز عادی
که ما به شما بگویم برای آزمونها.
>> بنابراین شروع کردن آسان است، انواع داده ها و اندازه.
همانطور که گفتم، این فقط رفتن به من پرتاب بسیاری از مسائل
در اینجا است که شما باید بدانید.
بنابراین ما باید کاراکتر های ما که یک کلمه در ادامه متن، وقفه ها
که چهار بایت، طولانی طولانی، که هشت بایت می باشد.
در واقع، آن را فقط به شما می خواهم به نگه اعداد صحیح بزرگتر.
شناور، که چهار هستند، دو برابر، که هشت.
باز هم، فقط به شما می دهد بیش فضا برای شناور خود را.
و سپس نوع ستاره، بنابراین هر اشاره گر را بر روی یک ماشین 32 بیتی،
است که همه شما بچه ها نیاز می دانید، چهار بایت است.
>> پس همه چیزهایی که شما باید می دانم، شاید همه چیز
شما می خواهید در دارند ورق مرجع خود.
OK، تبدیل دودویی به باینری، تبدیل
به هگزادسیمال، به جلو و عقب، همه چیز شما باید بدانید.
پس از دودویی به دهدهی.
شما بچه ها می خواهید را به یک دقیقه سریع و سعی کنید شکل و خارج هر یک از این
و سپس به من بگویید چه هستند؟
>> من هم آب نبات را در کیف من است، پس هر کسی که پاسخ می شود آب نبات، توسط راه.
و من مقدار زیادی از آن.
اجازه بدهید من این را با شتاب.
من قصد دارم به این را به گیب.
بنابراین شما می توانید به دست آب نبات هر کس را به خوبی و تعاونی.
>> OK، من یک دست در پشت دیدم وجود دارد.
>> دانشجو: بله، یکی از اولین 42 است.
>> آلیسون: بله، یکی از اولین 42 است، درست باشد.
دانشجو: [نامفهوم].
[خنده حضار]
آلیسون: دوم، وجود دارد در پشت زرد؟
دانشجو: 110010.
آلیسون: درست است، و این یکی از آخرین، در اینجا در پایین؟
همچنین، آره، می دانید می خواهید؟
فقط پرت کردن از آب نبات.
چگونه در مورد آب نبات برای همه؟
>> دانشجو: [نامفهوم] در زمانی که ما در حال انجام می شود.
>> آلیسون: Shh.
و پس از آن یکی از آخرین.
چه کسی می خواهد به پاسخ؟
سمت راست وجود دارد.
>> دانشجو: 11100.
>> آلیسون: 11100، در آن نگاه کنید.
تبریک می گویم، کار بزرگ، هر کس.
OK، همه نوع از درک این فرایند را برای انجام این کار؟
شما، رفتن از دودویی به عدد راه من تمایل به انجام آن است، نوشتن
قدرت 2.
بنابراین من می گویم، OK، 0 بار 2 تا 0، بنابراین که 0، 1 بار 2 به اول،
2 رفتن به بعد که راه.
آیا کسی به من به صراحت می خواهید از طریق یک مثال از باینری برود؟
OK، سرد.
>> دهدهی به دودویی بسیار مشابه است.
من تمایل به ارسال از قدرت 2.
شروع با یک است که بزرگترین، اما گذشته از اعشار رفتن نیست
که شما دنبال آن هستید.
و پس از آن نوع کار راه خود را از عقب اضافه کردن چیزهایی که لازم.
>> و سپس با علاوه بر این، آن را درست مثل علاوه بر این طبیعی است.
اگر شما تا به حال در مورد که در آن شما باید اضافه کردن دو 1S، آن را به وضوح می شود 2.
2 در باینری در حال حاضر 1 0 بنابراین شما نیاز به حمل 1 خود را به ستون بعدی.
دانلود.
>> هگزادسیمال، این ممکن است چیزی که کمی کمتر آشنا.
بنابراین به عنوان راب فقط به من گفتن بود از قبل، خود را برای این ترفند
است به آن را فقط تقسیم کردن به چهار تکه بایت، OK؟
بیت، متاسفم.
می بینید؟
تشکر راب.
به همین دلیل است که شما در اینجا. [NOISE] OK، بنابراین ما فقط آن را شکستن
به چهار بیت تکه.
بنابراین با باینری به هگزادسیمال، ما در اولین نگاه 4،
است که اگر ما چهار 1S در ردیف، چه تعداد می کند که نماد؟
>> دانشجو: F.
>> آلیسون: بنابراین در این مورد، 11111111 or-- بله چیزی است؟
دانشجو: FF.
آلیسون: کامل، FF.
آنقدر بزرگ است، آب نبات را برای شما.
در حال حاضر، برای چه هگزادسیمال به باینری، ما فقط در مورد آن فکر می کنم نوع در جهت معکوس.
برای هر عدد و یا نامه ای که ما در مبنای شانزده ما،
فقط آن را به چهار بیتی خود را تبدیل [می خندد] به تبدیل چهار بیت آن است.
بنابراین 5، در این مورد، چه 5 است اگر ما به نمایندگی آن را با چهار بیت؟
>> دانشجو: 010؟
MM-HM.
و پس از آن، این است که در واقع 10، خواهد بود؟
1010.
بنابراین ما باید که، در اینجا.
بنابراین تبدیل هگزادسیمال و دوتایی در واقع این است که بد نیست.
اگر شما به آن نگاه کنید در چهار بیت تکه، رفتن به طلایی رنگ شود.
Everyone-- بله؟
>> راب: این احمقانه است، اما من همیشه به یاد داشته باشید
A، از این قرار است 10.
و باینری فقط 10 10، so--
>> آلیسون: آه، ما به.
>> راب: سلام.
>> آلیسون: با سلام، آب نبات برای راب.
چیزهای غیر شکلات در آنجا وجود دارد.
بنابراین شما می توانید برخی از.
ریاضی بنابراین ASCII.
رفتار کنند.
بنابراین ریاضی ASCII، به شما به عنوان بچه ها احتمالا به خوبی به یاد داشته باشید
P با VISIONEER مجموعه 2 و سزار، به شما مقدار زیادی از این را انجام داد.
به یاد داشته باشید، شخصیت ها اساسا فقط اعداد.
بنابراین ما می توانیم با آنها ریاضی را انجام دهد، درست مثل ما ریاضی در رابطه با وقفه.
>> بنابراین ما باید فقط کمی چیزی که در اینجا ساده.
در حال حاضر برخی در این مقداردهی اولیه به 65.
و B برابر با ارزش ASCII از به علاوه 1، کاراکتر C به D منهای 1 برابر،
و کاراکتر D به 68 برابر است.
پس ما می رویم به چاپ همه آنها، که ما در اینجا مشاهده کنید.
و هر کسی می تواند به من بگویید چه این را چاپ کنید؟
دانشجو: [نامفهوم].
آلیسون: دقیقا، بنابراین یک چیز به اطلاع می
که ما در حال چاپ شخصیت در هر زمان، در اینجا.
ما در حال تعیین حتی اگر A و B وقفه ها زمانی که ما آنها را بالا اعلام کرد.
ما آنها را چاپ به عنوان شخصیت های درصد C و بیانیه printf را ما،
به طوری که آنها تمام خواهد شد به عنوان شخصیت های چاپ.
و البته، مقدار ASCII 65 اراده چاپ به عنوان A. مقدار ASCII از 1 به علاوه
خواهد بود 66، که افتخار به B. پس در واقع، ما
دریافت B C D. هر کس خوب وجود دارد؟
هر گونه سؤال؟
بسیار جذاب است.
>> OK، دامنه.
بنابراین بدیهی است که دامنه بسیار چیزی که مهم است به درک، در اینجا.
بسیاری از شما، اگر شما اشتباهات تدوین،
و آن را می گوید شما لازم نیست دسترسی به برخی از متغیر،
این احتمالا به خاطر شما آن را در یک حلقه تعریف
و پس از آن سعی کردم به آن دسترسی داشته باشید خارج از آن، و یا بالعکس.
>> بنابراین دامنه در هسته خود، آن را فقط به تعیین که در آن
ما می گوییم یک متغیر وجود دارد، که در آن ما می توانید آن را تغییر دهید، که در آن ما می توانیم آن دسترسی داشته باشید.
این فقط نوع گفتن این تنها مکان که در آن شما دسترسی دارند
به این متغیر.
>> بنابراین این دو حوزه است که ما در مورد صحبت در کلاس جهانی و محلی است.
متغیرهای بنابراین جهانی که ما در مورد صحبت هنگامی که شما آنها را تعریف بالا اصلی.
این بدان معنی است که تمام خود را برنامه دسترسی به آن،
و آن را تا زمانی وجود دارد به عنوان اجرا می شود برنامه، OK؟
محلی بدان معنی است که آن را بیش محدود به یک منطقه.
بنابراین هر زمان که شما از توابع خاص مانند مبادله، ما همیشه در مورد صحبت کنید.
ما همیشه در مورد مبادله با و صحبت B. A و B است که در آن تابع وجود داشته باشد.
آنها هر جای دیگری وجود ندارد.
>> همچنین، هنگامی که شما اگر دارای اظهارات و یا برای حلقه.
هر زمان که ما، به عنوان مثال، در برای حلقه ما از نوع int I برابر با 0.
ما برخی از شرایط و ما آن را به روز رسانی.
من فقط در وجود دارد پرانتز که برای حلقه.
اگر شما سعی می کنید به آن دسترسی داشته باشید در جاهای دیگر، کامپایلر خود را در شما داد.
آن را می خواهم مانند، چیزی است که شما در تلاش هستند کاری انجام دهید؟
این وجود ندارد.
به طوری که دو است انواع مختلف دامنه.
آیا این را حس برای همه؟
>> بنابراین برای مثال در اینجا، این فقط برخی از برنامه بسیار ساده است.
شما بچه ها چه فکر می کنم رفتن به در هر نقطه اتفاق می افتد
که ما سعی می کنیم برای چاپ؟
پس این یکی در اینجا، چه اتفاقی خواهد افتاد؟
دانشجو: این سه نسخه قابل چاپ.
آلیسون: درست است.
این سه را چاپ کنید.
چه در مورد اینجا؟
دانشجو: این کار نخواهد کرد.
آلیسون: این کار نخواهد کرد.
شما از دامنه هستید، درست است؟
متغیر محلی وجود ندارد در خارج از این پرانتز، همه حق است؟
و سپس آنچه در مورد اینجا؟
>> دانشجو: [نامفهوم].
>> آلیسون: چه؟
راب، بروید.
>> راب: من فقط گفت.
متغیرهای جهانی باید متغیر تاکید جهانی است.
>> آلیسون: آه، بله، متاسفم.
تشکر راب.
در راب مانند کامپایلر اقامت ما.
او فقط به ما داد وقتی که ما به آن نیاز دارید. [می خندد] بله،
باید متغیر تاکید جهانی باشد.
بنابراین فرض کنید که که تاکید جهانی بود
متغیر، آنچه در اینجا اتفاق می افتد؟
دانشجو: این کار خواهد کرد.
آلیسون: این کار خواهم کرد.
پس از آن خواهید چاپ، بنابراین فقط یک مثال بسیار ساده است.
OK، نمونه های اولیه.
بنابراین بدیهی است، ما واقعا تاکید برای شما بچه ها
به توابع اگر آن ایجاد حس در برنامه های خود.
اما البته، زمانی که شما توابع خود را،
معمولا شما آنها را پس از تعریف اصلی.
و شما سعی می کنید به آنها را در اصلی.
و اگر شما یک نمونه اولیه استفاده کنید، کامپایلر شما در شما داد.
>> نمونه اولیه است که اساسا فقط گفتن کامپایلر شما
که من این تابع زیر اصلی داشته باشد.
من قصد دارم به آن را قبل از آن تعریف کنم.
کافیست فقط بر روی نگه دارید.
من قول می دهم که آن را تعریف، و شما همه چیز را که شما نیاز داشته باشد.
>> پس راه ما این کار را فقط بازگشت شما نوع، نام تابع خود، ورودی های خود را
لیست.
این اساسا خط اول از اعلان تابع خود را.
این واقعا تمام آن است.
اما این فقط یک نوع کلی از فرمت.
>> بنابراین در مثال ما در اینجا، که شما بچه ها باید
در بخش دیده می شود در برخی موارد، ما باید
برخی از اعضای هیات که مکعب برخی از اعضای هیات از ورودی می گیرد.
و ما اصلی ما تابع، که خواستار مکعب.
و مکعب است پس از این واقعیت تعریف شده است.
>> بنابراین اگر ما ورودی مکعب اعضای هیات ندارد در بالا، زمانی که ما به نام مکعب
در اصلی، کامپایلر ما دیوانه در ما می شوند.
این می خواهم، آنچه شما در مورد صحبت کردن؟
مکعب وجود ندارد.
من نمی دانم آنچه را که شما برای درخواست.
و من فقط رفتن توقف.
>> اما از آنجا که ما نمونه را انجام می دادیم در بالا، ما گفته اید،
شما می دانید، هنگامی که شما ببینید مکعب، در مورد آن نگران نباشید.
من قول می دهم آن را به بعد تعریف شده است.
و آن را به شما اجازه انجام آنچه شما می خواهید.
بنابراین اگر شما همیشه یک تابع باید که اعلام شده پس از شما آن را
برای اولین بار، شما به نیاز آن را در بالای نمونه سازی.
>> بله؟
>> راب: این مربع، cubing نیست.
>> آلیسون: آه خدای من.
من گیب have-- نیست، من فکر می کردم شما proofreader ما بودند.
بچه OK، خرس با من، در اینجا.
من امیدوارم که هر کس گرفتن ایده.
OK، بنابراین این باید مربع است، نبات نیست.
اما ایده باقی می ماند همان.
هر تابع که ما خواستار پس این واقعیت را باید نمونه اولیه داشته باشد.
هر کس خوب با آن؟
هر غلط املایی دیگر؟
OK.
هر غلط املایی در اینجا قبل از ما شروع، راب؟
[می خندد] OK، بنابراین ساختمانها.
در واقع، ساختمانها شما اجازه می دهد برای ایجاد نوع داده خود را.
بنابراین بسیار شبیه به یک int یا کاراکتر و یا شناور، آن را فقط به نوع دیگری است.
من دوست دارم به آن فکر می کنم به عنوان، مانند، ایجاد نوع داده خود را.
پس از آن اجازه می دهد تا شما را به انجام این کار.
و آن را نگه می دارد انواع مختلف داده ها.
>> بنابراین اگر شما به یاد داشته باشید، در یک آرایه، ما تنها می تواند کارها را از نوع مشابه نگه دارد.
ساختمانها به ما اجازه برگزاری چند همه چیز از انواع مختلف.
بنابراین در این مورد در اینجا، ما یک ساختار به نام دانشجو،
در پایین نام کنید.
و ما باید برخی از شناسه بین المللی و برخی از نام رشته.
پس این فقط یک نوع داده است.
ما در حال حاضر یک نوع داده به نام دانشجو.
>> بنابراین از آنجا که ما می توانید از فکر می کنم آن را به عنوان فقط یک نوع داده،
ما می توانیم متغیرهای اعلام که ما تا به دیگر.
بنابراین به جای فقط داشتن، مانند، دانشجویان بین المللی، ما فقط باید یک دانش آموز،
دانش آموز 1.
اوه، نگاه کنید.
این راب است.
بنابراین در اینجا ما اعلام یک ساختار، و یا یک متغیر
نام دانش آموز 1 از نوع دانشجویی.
پس از آن به رفتن به شناسه و نام های مرتبط با آن.
>> و راه ما دسترسی به این عناصر در ساختار ما
با عملگر نقطه، در اینجا.
بنابراین در این مورد، ما برخی از دانش آموزان 1 اعلام کرد.
ما اختصاص ID به 1.
و ما اختصاص نام به راب.
OK، همه خوب با که؟
از آن استفاده کنید like-- بله؟
>> دانشجو: بله، زمانی که typedef-- ما نیاز به استفاده از typedef؟
>> آلیسون: پس typedef فقط می گوید that-- راب، شما
می توانید به من در این اصلاح اگر من wrong-- هستم اما در واقع فقط typedef اعلام
آن را به عنوان یک نوع است که شما می توانید استفاده کنید، درست است؟
>> راب: آره، آن را در واقع، بنابراین آن را فقط ایجاد
نام مستعار یا یک نام مستعار برای یک نوع.
بنابراین شما می توانید نوع می باشد که [نامفهوم].
پس [نامفهوم] وجود دارد، و در حال حاضر ما فقط باید
[نامفهوم] ابزار دقیقا همان چیزی که.
و بنابراین در اینجا، ما در حال تایپ شده، من فکر می کنم، برخی از ساختار نوع 2 [نامفهوم].
پس از آن تنها یک نام مستعار برای یک نوع داده شده است.
>> دانشجو: رشته [نامفهوم] کتابخانه مثل ستاره کاراکتر تایپ شده است.
>> آلیسون: برای هدف ما در اینجا، اگر شما در حال اعلام یک ساختار،
فقط typedef ساختار.
OK، بنابراین از قبل، این است که فقط یک متغیر نرمال اینجا.
ما آن دسترسی داشته باشید با یک نقطه.
اگر ما یک اشاره گر به یک ساختار، ما در واقع می تواند
استفاده از فلش است که بسیار سرد.
>> بنابراین در این مورد، ما یک اشاره گر به یک دانش آموز 1 است که از نوع دانش آموز.
به یاد داشته باشید، با شما ساخت و ساز اشاره گر،
شما می خواهید هر نوع اشاره گر خود را با اشاره به در آغاز باشد.
بنابراین ما باید برخی از دانش آموزان 1، در اینجا.
و از آنجایی که این دانش آموز 1 در حال حاضر اشاره کرد،
ما در واقع می تواند به دانش آموز 1 arrow نام به جای نقطه، به دلیل آن است که یک اشاره گر است،
و اختصاص راب.
و در حال حاضر اگر ما به خواهید تغییر راب به داوین،
این است که فقط به شما نشان راه های مختلف به انجام آن.
>> بنابراین به جای استفاده از فلش، شما می also-- من این پایان و پس از آن
را که شما می توانید از question-- همچنین انجام دانشجوی مرجع 1.
که گفت: مثل رفتن به آنچه در دانش آموز 1، که
خواهد بود ساختار دانش آموز ما.
دسترسی به آن با یک نقطه و عنصر که شما می خواهید، و سپس آن را تخصیص دهید.
یک سوال وجود دارد.
دانشجو: بله، پس چرا شما برای استفاده از [نامفهوم] زمانی که شما
انجام ستاره دانشجو بدون [نامفهوم] دانش آموز؟
آلیسون: از آنجا که این در حال ایجاد یک اشاره گر.
راب: ما قصد داریم در مورد آن صحبت کنید.
آلیسون: ما قصد داریم به بحث در مورد آن بعدا در بررسی.
پس فقط بر روی آن فکر نگه دارید.
اگر هنوز هم شما را اذیت در پایان، آمده صحبت یکی از ما.
>> پس این دقیقا همان چیزی.
ما فقط به شما نشان دو روش های مختلف به انجام آن.
دانشجو 1 در حال حاضر یک اشاره گر شما می توانید عنصر نام دسترسی
در ساختار با فلش.
یا شما می توانید ارجاع اشاره گر خود را، و سپس آن را به عنوان شما به طور معمول دسترسی داشته باشید.
آیا که حس می کند به هر یک؟
اگر تمام چیزهایی اشاره گر کمی هستند گیج کننده، گیب خواهد در مورد آن صحبت می کنید،
و پس از آن شاید این معنادارتر خواهد بود.
بله؟
>> دانشجو: بله، پس چگونه است این متفاوت از؟
آلیسون: یکی از قبلی؟
بنابراین دانش آموز 1 در این مورد اشاره گر نیست.
این فقط ساختار واقعی خود است.
>> دانشجو: OK.
>> آلیسون: در حالی که این یکی یک اشاره گر به یک ساختار است.
>> دانشجو: OK، اما نوع تا پایان کار همان [نامفهوم].
>> آلیسون: این کار به طور موثر همان.
نحو خود را فقط متفاوت است.
دانشجو: OK.
>> آلیسون: بله، آنها هستند همان طور موثر.
این فقط بسته به زمینه، شما ممکن است یکی را بر دیگری می خواهید.
بله؟
>> دانشجو: وقتی که شما انجام مراجع به 1--
آلیسون: MM-HM؟
دانشجو: چرا شما انجام دهد دارای پرانتز؟
آلیسون: از آنجا که دانش آموز 1 اشاره گر است.
بنابراین شما نیاز به اطمینان حاصل کنید که فقط هرگاه اشاره گر.
>> دانشجو: OK.
>> آلیسون: بنابراین در این مورد در اینجا، پرانتز در اطراف آن
بدان معناست که شما هرگاه دانش آموز 1.
بنابراین شما در حال رفتن به جایی که دانش آموز 1 امتیاز، است که ساختار خود را.
بنابراین در حال حاضر شما می توانید فکر می کنم از آن به عنوان ساختار است که،
بنابراین ما می توانیم عملیات نقطه عادی ما استفاده کنید.
هر گونه سؤال دیگر؟
داغ، بسیار جذاب است.
>> بنابراین آخرین چیزی که من فکر می کنم آخرین اسلاید من است، وو!
OK، بنابراین شناور نقطه عدم دقت.
ما به طور خلاصه در مورد صحبت این در طول سخنرانی.
در واقع، ما باید بی نهایت عدد واقعی است.
و اگر هر کدام از شما بچه ها عاشق ریاضی، وجود دارد
تمام انواع چیزهای جالب با ما.
>> اما بی نهایت وجود دارد بسیاری از اعداد حقیقی.
اما آنها تنها محدود هستید بسیاری از بیت که ما داشته باشد.
بنابراین شما همیشه به عدم دقت داشته است، تمام.
و این که فقط نوع مانند چیزی است که شما باید بدانید.
که مثل ما ممکن است شما بپرسید چرا نقطه شناور عدم دقت وجود دارد؟
پس فقط چیزی است که شما باید بدانید.
و با آن، من تبدیل آن را به اشاره گرها.
>> BINKY: سلام، بچه ها.
Binky نام من است.
من قصد دارم در مورد اشاره گر صحبت کنید.
آره، پس اشاره گر است که در واقع بخش مورد علاقه من در این دوره.
پس فقط به روشن آلیسون صحبت کردن در مورد در اینجا، بنابراین به این دلیل
why-- تنها تفاوت در اینجا، تفاوت بزرگ در راه بود
ما همه چیز را اعلام.
بنابراین ستاره دانشجویی این بدان معنی یک اشاره گر به یک دانش آموز است.
در حالی که قبل از اسلاید، دانش آموز است ساختار واقعی، مانند یک دانشجوی واقعی،
حاوی هر یک از کسانی که همه چیز.
>> و به همین دلیل ما می خواهید to-- بله، داوین؟
>> داوین: فلش چیست؟
>> BINKY: فلش ابزار دقیقا همان این.
بنابراین شما واقعا نیاز به فلش.
مانند، اگر شما تنها برنامه هستید در C، شما فقط می توانید از این استفاده کنید.
با عرض پوزش، من انجام آنچه که است.
شما فقط می توانید استفاده از این نحو.
>> اما برخی از مردم، زمانی که آنها طراحی شد C،
که آنها نمیفهمد مردم استفاده می شود که به نحو بسیار،
که آنها می خواهم فقط می آیند با ساختار دستوری برای آن است.
و این مکان در زمان شکل این فلش.
و این واقعا خوب است، چرا که نماد چیزی
مثل ما در واقع زیر این تیر، این اشاره گر،
به سمت برخی از فضای موجود در حافظه.
و هنگامی که ما وجود دارد، ما به خواهید نگاهی به نام دانش آموز،
در صورتی که حس می کند.
OK؟
>> پس این است که دقیقا همان.
این دقیقا همان چیزی که به عنوان این.
آنها وارد کنید دقیقا همان، OK؟
و به این دلیل در اینجا به همین دلیل ما malloc چیزی است، چرا که در این مورد،
متغیر است که در واقع ما فقط یک متغیر اشاره گر.
بنابراین ما فقط برخی از فضای در دارند حافظه که برگزاری یک اشاره گر.
ما واقعا نمی هر فضا که ساختار واقعی نگه می دارد.
>> پس این است که در دو مرحله انجام شود.
ما برای ایجاد حافظه برای قرار دادن در ساختار.
و ما باید برای ایجاد حافظه برای قرار دادن اشاره گر در.
به طوری که آنها اساسا دو عوامل مختلف، در اینجا.
یکی از آنها از نوع دانشجویی، به جز آن را واقعا نمی یک نام داشته باشد.
و یکی دیگر است ستاره های دانشجویی نوع.
و پس از آن 1 امتیاز دانش آموز وجود دارد، در صورتی که حس.
OK؟
>> بنابراین به همین دلیل ما استفاده از اشاره گر است، زیرا همه چیز
در یک کامپیوتر، هر متغیر در یک کامپیوتر دارای دو چیز است.
آن را تا به ارزش آن است.
و آن را تا آدرس آن است.
و یک راه خوب برای مفهوم این است وجود دارد
بسیاری از مشکلات زمانی که شما سعی کنید برای استفاده از توابع.
و ما قصد داریم به تلاش برای به یکی از آن نگاه کنید.
یعنی، آن را به از حافظه به عنوان جعبه فکر می کنم.
>> شما همیشه فکر می کردم از متغیرهای هنگامی که شما NA می گویند معادل 5.
شما از قرار دادن 5 به یک جعبه فکر می کنم.
بنابراین اگر شما می خواهید به تصویب که از نوع int را به یک تابع؟
شما فقط pass-- من نمی know-- X را به یک تابع.
اما چه اتفاقی می افتد به طور معمول به عنوان انسان، شما
چیزی فکر می کنم مثل من عبور از دستگاه به فرد.
و آن را واقعا نمی اتفاق می افتد در رایانه است.
چه اتفاقی می افتد این است که شما کپی مقدار از جعبه به جعبه فرد.
>> پس چه من تلاش می گویند این است که اگر شما یک function-- اینجا sorry--،
اگر ما یک تابع مانند تا پنج تا وجود دارد، اگر شما سعی می کنید به تصویب یک متغیر،
آن را فقط کپی کنید.
اگر NX مقداردهی اولیه برابر 3، آن را برای کپی کردن این مقدار به متغیر
وجود دارد.
OK، و این نوع از دلیل است چرا که ما می خواهیم برای استفاده از اشاره گر.
از آنجا که به جای دادن فقط ارزش،
به جای فقط عبور فقط ارزش به یک تابع،
ما می خواهیم به انتقال توسط مرجع.
چیزی که ما پاس فراخوانی با ارجاع نوع دادن جعبه را به تابع،
به طوری که تابع همچنین می تواند در آن جعبه تغییر ارزش.
>> OK، بنابراین فقط برخی از اشاره گر عمومی چیزهای است که برای ایجاد اشاره گر،
شما فقط آن را اعلام نوع و شما یک ستاره درست پس از آن قرار داده است.
و نوع فقط آنچه را که شما اشاره.
بنابراین اگر این ستاره بین المللی است، شما اشاره به یک int.
اگر یک ستاره کاراکتر است، شما اشاره در یک نمودار.
و اگر آن را به یک ستاره دانشجو، شما اشاره به یک دانش آموز.
OK؟
>> و همه آنها 4 بایت است.
از آنجا که این متغیر این کار در واقع نه
نیاز به برگزاری یک کاراکتر، متوسط، و یا یک دانش آموز.
تنها نیاز به برگزاری یک آدرس.
به همین دلیل است که همه آنها 4 بایت هستید طولانی در یک ماشین 32 بیتی طبیعی است.
OK؟
بنابراین در اینجا، X یک متغیر است که اشاره است به یک int. نقاط Y به کاراکتر. نقاط Z
به شناور.
هر گونه سؤال اینجا؟
دانلود.
و دو وجود دارد علامت های مختلف آنها
در هنگام حفظ آمدن به اشاره گر.
بنابراین ارجاع و هرگاه آنهایی که بزرگ است.
بنابراین علامت از نام متغیر شما می دهد؟
دانشجو: آدرس.
BINKY: آدرس.
بنابراین اگر اعضای هیات شما اعلام برابر با 5، پس از آن علامت
از رفتن به شما آدرس بدهد.
و شما در واقع می توانید سعی کنید برای چاپ و ببینید که
آدرس در حافظه متغیر خود را دارد.
و سپس dereferencing-- به طوری که، ارجاع شد
گرفتن غیر مرجع address-- در مقابل دقیق است.
OK، درست مثل بار است مقابل یک بخش،
ستاره مخالف علامت است.
بنابراین هرگاه وسیله وجود دارد بروید.
بنابراین اگر شما من را star-- 50 know-- نیست، که
رفتن به سعی برای رفتن به آدرس تعداد 50 در داخل کامپیوتر شما.
OK، و چرا ما را ببینید که آنها مخالف هستند؟
از آنجا چه اتفاقی می افتد اگر شما چیزی شبیه به ستاره علامت؟
خب، علامت به شما می دهد آدرس یک متغیر، آدرس یک.
اما ستاره به معنی وجود دارد.
>> پس چه اتفاقی می افتد اگر شما به آدرس بروید؟
شما فقط به یک دریافت، درست است؟
پس از رفتن به آدرس همان چیزی که به عنوان یک است.
به همین دلیل است که آنها معمولا هستید با اشاره به این same--
و این که به آن اشاره اپراتورهای عنوان مخالف.
OK؟
خیلی باحال.
>> زیر کاپوت، به عنوان مثال، اگر ما اعلام اعضای هیات ایکس برابر 5،
ما باید یک متغیر.
و به یاد داشته باشید که من هر گفت variable-- و این چیز خوبی است
در حفظ mind-- آن دو چیزهای مختلف با همراه است.
آن را تا به ارزش و خطاب.
OK؟
>> بنابراین ارزش در این مورد 5 است.
و آدرس is-- اجازه دهید بگویم، من هستم ساخت چیزی up-- آن 0x04.
و تنها به همین دلیل ما معمولا نشان دهنده آدرس در مبنای شانزده
یکی است، زیرا آن را مانند خوب است.
آن را به خوبی با باینری می رود.
این آسان برای تبدیل به و از دودویی.
و آن را بیش از حد بزرگ اگر می کنید شما یک عدد بسیار بزرگ است.
بنابراین ما مایل به استفاده از مبنای شانزده در آدرس های چاپ.
اما من می تواند نشان دهنده این را به عنوان یک عدد صحیح.
این خوب است.
>> و پس از آن یک آدرس 4 و ارزش 5.
و پس از آن من گفتم اشاره گر ستاره بین المللی.
بنابراین این نوع، توجه متفاوت است.
بین المللی اشاره گر ستاره برابر است با آدرس X.
پس چه در حال رفتن به ارزش PTR؟
آن را به آدرس X، را در اینجا.
OK، بنابراین ارزش است رفتن به همان آدرس.
که انتساب عمل من انجام.
و سپس PTR است که به آدرس خود را، که معلوم است،
در این مورد، 8، OK؟
>> و بعد من یک کپی صحیح جدید ایجاد کنید.
و من می گویم کپی اعضای هیات برابر وجود دارد.
پس به آنچه PTR است با اشاره به رفتن.
خوب، این PTR دارند؟
PTR است 0x04.
اگر من سعی می کنم برای رفتن وجود دارد چه اتفاقی می افتد؟
من آن مرد که پیدا کردن آدرس x و که آدرس 4.
و که در حال رسیدگی به چهار X است.
آیا این را حس؟
بله؟
>> دانشجو: در این مورد، اشاره گر در پشته؟
>> BINKY: در این مورد، it's-- سوال خوب است.
من واقعا در این مورد فکر نمی کنم هنگامی که ساخت این آدرس.
اما اگر این است، مانند، همه این متغیرهای محلی هستند،
آنگاه x است که به زندگی می کنند همه چیز را in-- در حال رفتن به در پشته زندگی می کنند.
بنابراین همه چیز به اشاره به پشته.
شما تنها به پشته هنگامی که دریافت شما شروع به استفاده از malloc، درست است؟
>> بنابراین اگر شما به خاطر پشته در هر زمان است شما یک تابع را فراخوانی در برنامه های خود،
مانند، اصلی به عنوان مثال، و یا هر عملکرد های دیگر، مانند printf را.
تمام متغیرهای محلی هستند رفتن به در یک قاب پشته قرار داده است.
و آنها در حال رفتن به گرفتن مانند تا در پشته انباشته شده است.
این چیزی است که پشته نامیده می شود.
و تمام کسانی که متغیرهای محلی در حال رفتن به وجود داشته باشد.
و heap-- و ما قصد داریم به صحبت بیشتر در مورد این later--
پشته است که در آن همه به صورت پویا جان حافظه اختصاص داده است.
سرد؟
>> ما به این اسلاید بروید.
بله؟
>> دانشجو: چرا اعضای هیات نمی کپی از بازگشت 0x04؟
>> BINKY: چرا اعضای هیات نمی کپی از بازگشت 0x04؟
>> دانشجو: چرا که نه [نامفهوم]؟
>> BINKY: از آنجا که یک مقدار PTR است؟
>> دانشجو: 0x04.
>> BINKY: 0x04.
اگر شما به 0x04 چه اتفاقی می افتد؟
چه چیزی شما را دریافت کنم؟
>> دانشجو: اوه، OK.
BINKY: می بینید؟
دانشجو: بله.
BINKY: پس شما 5.
بنابراین کپی است که به 5، در صورتی که حس می کند.
بله؟
>> دانشجو: آیا ما بدست 5 در جعبه عبارت [نامفهوم]
اگر ما قرار اعضای هیات کپی [نامفهوم].
>> BINKY: Int-- ما را، آره.
که انجام داده اند تقریبا همین.
اما این راه، ما می توانیم عبور آدرس توابع.
و این نکته جالب است ما در حال رفتن به انجام در حال حاضر.
>> بنابراین این نوع ورزش ها همیشه می آید تا on-- بسیار معمولا می آید تا در آزمونها.
بنابراین واقعا خوب را به تلاش برای انجام این نوع از چیزی از خود.
بنابراین سعی کنید برای پیگیری چه آدرس است و می خواهید مقادیر متغیرهای
در هر نقطه می باشد.
پس این دقیقا همان آنچه که ما در حال رفتن به انجام.
در اینجا، ما مراحل، یک، دو، سه، چهار، پنج.
یک، دو، سه، چهار، پنج.
و ما قصد داریم برای پیگیری از مقادیر x و.
>> پس چه است این کار، اگر این است کد حشره دار، ما در حال تلاش برای انجام پنج.
بنابراین ما در حال تلاش برای در دریافت متغیر و مقدار آن را 5 تغییر دهید.
و به یاد داشته باشید قیاس من از داشتن یک جعبه و توزیع جعبه به کسی؟
بنابراین اصلی این کادر به نام X.
و آن را حاوی ارزش 3.
و من در تلاش برای دست این کادر به پنج.
>> و من به پنج می خواهید به تغییر ارزش این جعبه به 5.
و پس از آن من فقط چاپ مقدار x.
این چیزی است که من function-- این چیزی است که من در تلاش برای انجام.
دارم سعی می کنم به روز رسانی مقدار x را به 5.
آیا روشن تابع انجام می دهد؟
>> خوب، پس چه می خواهد مقادیر x و حق در اینجا،
خط اول، درست قبل از اولین line-- من از برنامه say--؟
>> دانشجو: احتمالا زباله.
>> BINKY: فقط چیزهای زباله.
بنابراین من فقط با قرار دادن N / A. پس ما واقعا نمی دانند.
مانند، حتی هنوز وجود ندارد، زیرا ما را به پنج نام نیست.
بین المللی است اعلام شده است.
و X است که به وجود در اینجا، اما ما واقعا نمی
اختصاص هر مقدار به آن، بنابراین OK؟
>> و پس از آن، آنچه که در حال رفتن به مقادیر x و در شماره دو؟
>> دانشجو: [نامفهوم].
>> BINKY: بنابراین X در حال رفتن به 3.
که آسان است، چرا که ما در حال اختصاص 3 به آن است.
و هنوز هم وجود ندارد چون فقط در پنج زندگی می کند.
بنابراین من قصد دارم به 3 و هیچ چیز نیست.
و یا مانند زباله، هر، واقعا تعریف نشده است.
و در حال حاضر، این خط مهم است.
در اینجا، ما در حال رفتن به در واقع به پنج تماس بگیرید.
و به یاد داشته باشید آنچه که من گفتم.
ما هرگز در جعبه منتقل می کند.
ما فقط کپی کنید و ارزش جعبه به جعبه دیگر.
که همه رایانه ها، کپی همه چیز از یک مکان به مکان دیگر.
>> بنابراین تا پنج، چه آن را در واقع می کند آن کپی مقدار x به یک است.
پس چه است رفتن به اینجا؟
مقادیر x و.
3 و 3، ما فقط کپی کنید آن را بیش از X به.
دانلود.
>> حالا ما اینجا هستیم.
و در حال حاضر ما در حال رفتن برای به روز رسانی برابر با 5.
آنچه در خط چهار اتفاق می افتد؟
>> دانشجو: [نامفهوم].
>> BINKY: به روز می شود، اما X بهروزرسانی نشد.
از آنجا که هنوز هم در X اصلی زندگی می کند، آن را یک بلوک کاملا متفاوت از حافظه است.
این یک متغیر متفاوت است.
یک متغیر دیگر است.
آنها رخ می دهد که همان ارزش به خاطر من
کپی بیش از مقدار x به.
اما در حال حاضر وقتی که من می توانم در یک برابر 5، آن واقعا اثر X به هیچ وجه نیست.
این بخش سختتر است.
آیا آن را حس می کند برای همه؟
بله؟
دانشجو: یک سؤال دیگر، شما باید 3.
چرا already-- آه، نه، آن را 3.
با عرض پوزش، ذهن هرگز.
من به عنوان خوانده شده 5.
>> BINKY: آره، 3، 3.
>> دانشجو: [نامفهوم]، آره.
BINKY: و بعد ما 5 اختصاص به ، اما واقعا تغییر X نیست.
خوب است؟
دانشجو: بله.
BINKY: بله؟
آیا می توانید توضیح دهید که چگونه دوباره کپی می شود [نامفهوم]؟
>> BINKY: OK، بنابراین، هنگامی که شما را به پنج تماس بگیرید از x، بنابراین این خط از کد در اینجا.
تا پنج از X، X چه است؟
X فقط 3 در این نقطه، درست است؟
بنابراین شما فقط می تواند از قرار دادن فکر می کنم 3 در اینجا و فراموش X.
فقط با قرار دادن 3 در اینجا.
مانند، ما قصد داریم برای کپی بر روی مقدار x را به نوع int که وجود دارد.
OK؟
>> بنابراین مقدار x 3 است.
ما قصد داریم برای کپی 3 به.
و تمام این بلوک دیگر حافظه، این متغیر دیگر
به نام خواهد شد که 3، و همچنین.
آیا این را حس؟
بله؟
>> دانشجو: اگر شما تا پنج را مانند آن را به عنوان عدد صحیح X به جای،
که همه چیز را تعمیر کنید؟
>> BINKY: اگر integer-- هیچ، که همه چیز را درست کند.
به طوری که یک سوال بسیار خوبی است.
آن را واقعا مهم نیست چه شما آن متغیر تماس بگیرید.
باز هم، از آن خواهد شد به یک موضوع از دامنه، زیرا آنها همان X نیست.
آنها به طور کامل هستید فضاهای مختلف در حافظه است.
دانشجو: [نامفهوم].
BINKY: بنابراین آن را واقعا نمی توجه به آنچه شما به آنها تماس بگیرید.
این بدان چیز ثابت نیست، OK؟
سوالات بیشتر؟
بله؟
>> دانشجو: چگونه است آن را دوباره به تعداد پنج [نامفهوم]؟
BINKY: OK، ما انجام نداده اند که هنوز.
بیایید به عدد پنج، پس از آن.
>> دانشجو: [نامفهوم]؟
>> BINKY: چه؟
>> دانشجو: آیا شما یک بازگشت در تمام؟
BINKY: ما لازم نیست بازگشت، نه به اصلی.
اما سود عمده 0 به طور خودکار اگر شما هیچ چیز را بر نمی گرداند.
بله؟
>> دانشجو: آیا شما را main-- یا می تواند شما را به پنج بازگشت را؟
>> BINKY: ما می تواند داشته باشد پنج بازگشت، بله.
اما پس از آن ما مجبور به اختصاص X برابر مقدار بازگشتی به پنج،
که می تواند یک کمی برنامه های مختلف.
به این کار.
اما آنچه ما می خواهیم انجام دهیم این است که چه چیزی است به نام تغییر چیزی در محل.
بنابراین ما در واقع می خواهیم تغییر که جعبه و نگران نباشید
در مورد داشتن به بازگشت ارزش یا هر چیزی.
OK؟
>> این درست مثل تابع مبادله دیوید نشان داد در سخنرانی، به جز من
تنها برخورد با یک متغیر.
و او با استفاده از دو، بنابراین اعضای هیات A و B و سپس متغیر موقت و فلان چیز.
OK؟
پس چه خط گذشته؟
پس از پنج بازده، آن را به سادگی رفتن به رفتن.
ما نمی خواهد داشته باشد دیگر، و تنها X هنوز هم در زندگی می کنند.
>> و حدس بزنید چه؟ X آیا ارزش آن را تغییر دهید،
پس از همه، چون ما هستیم تنها تغییر ارزش.
به همین دلیل در سراسر X 3 بود.
OK؟
خوب است.
بنابراین این برنامه را نمی کند دستیابی به آنچه ما می خواستیم.
اجازه دهید موضوع را حل کنند.
>> و برنامه با استفاده از اشاره گر ثابت است.
چه کار می کنیم این است که ما سه خطوط که متفاوت است.
نخستین کسانی است که ما در حال عبور از X نیست.
ما در حال عبور از آدرس X.
بنابراین به جای کپی کردن بیش از ارزش از جعبه،
من هنوز رفتن به کپی بیش از چیزی.
اما من کپی کردن بیش از آدرس در جعبه.
>> بنابراین اگر آدرس من عبور جعبه پنج، پس از آن تا پنج
قادر خواهد بود برای پیدا کردن که در حافظه و ارزش خود را تغییر دهید.
>> بنابراین و پس از آن وجود دارد، من که یک int است دیگر.
یک ستاره بین المللی است.
این یک اشاره گر به یک عدد صحیح است.
و پس از آن، چون من گذشت آدرس در اینجا، و پس از آن چیزی است که من انجام
نه برابر 5 است، زیرا برگزاری یک آدرس.
پس چه من می خواهم به انجام این کار است رفتن وجود دارد و به روز رسانی محتویات این آدرس
با 5.
>> OK، بنابراین اجازه دهید از طریق رفتن تمام خطوط یک به یک.
تا زمانی که من در اینجا شروع، من هنوز هم N / A، N / A، N / A
برای همه چیز در اولین خط، چون من واقعا نمی
اعلام مسائل است.
و پس از آن خط دو، من X برابر 3.
ستاره بین المللی وجود ندارد، همان چیزی که به عنوان قبل از.
>> در حال حاضر آن را جالب می شود.
بنابراین من قصد دارم به تصویب.
و اجازه دهید فرض کنیم که آدرس از * 12 در مبنای شانزده است.
اجازه دهید فقط این فرض.
من آن را ساخته شده است.
پس چه هستم من در اینجا عبور تا پنج است.
من عبور 12.
>> پس چه ارزش یک را داشته باشد؟
>> دانشجو: [نامفهوم].
>> BINKY: متاسفم؟
>> دانشجو: [نامفهوم].
BINKY: آره، مثل، به اجازه دهید فرض کنیم که ما در اینجا، در حال حاضر.
سؤال من.
>> دانشجو: [نامفهوم].
>> BINKY: این آغاز شده است.
>> دانشجو: [نامفهوم].
BINKY: از آنجا که ما گذشت چیزی برای تابع.
بله؟
>> دانشجو: آدرس X.
BINKY: این رفتن به آدرس های X.
و آدرس * 12 است، خوب است.
بنابراین X در حال رفتن به 3، به دلیل ما واقعا X هنوز تغییر نکرده است.
و پس از آن است که رفتن به 0x12، بنابراین آدرس X، چرا که
آنچه که ما را به پنج منتقل می شود.
>> و پس از آن چه اتفاقی می افتد اگر ما سعی می کنیم برای رفتن وجود دارد؟
چه می خواهیم برای پیدا کردن؟
بنابراین اگر شما سعی می کنید برای چاپ ستاره، ما قصد داریم به دنبال این آدرس
و ارزش در داخل.
و ارزش است فقط همان مقدار که x
است چرا که آدرس X، که خواهد شد 3.
آیا ما خوب است؟
>> OK و سپس در حال حاضر، ما در واقع وجود دارد بروید.
و ما هر چه به روز رسانی در این آدرس 12 است.
ما 5.
بنابراین در حال حاضر هر دو x و ستاره 5.
>> است که چرا؟
از آنجا که آدرس * 12 است.
و همچنین 12 عنوان ارزش خود را.
بنابراین اگر ما به دنبال 12، ما هستیم فقط رفتن برای پیدا کردن X.
بنابراین هر آنچه که ما با انجام ستاره است رخ دهد
به X، زیرا حاوی آدرس X.
OK؟
>> و این است که مانند اصل ثابت.
بنابراین در حال حاضر ما قادر هستیم، از پنج، در واقع
حافظه با دسترسی که در اصلی زندگی می کردند.
بنابراین این حافظه در به زندگی نمی کنند پنج، مانند قبل، این آدرس 12.
و ما قادر به رفتن وجود دارد و تغییر مقدار آن را 5.
>> و پس از آن هنگامی که بازگشت ما، ما در مورد یک را فراموش کرده ام.
ما در مورد ستاره فراموش کرده ام.
و X است که هنوز هم پنج.
بنابراین اگر شما می خواهید پیاده سازی یک تابع مبادله،
شما فقط می همین کار را دقیق، به جز شما نیاز به اعضای هیات ستاره در اینجا،
و غیره و غیره.
OK؟
آیا ما خوب است؟
دانلود.
>> پس حسابی اشاره گر.
این موضوع کمی پیچیده است.
پس معلوم است که اشاره گر فقط اعداد صحیح هستند.
شما می توانید از آنها به عنوان عدد صحیح فکر می کنم.
از آنجا که در حافظه، شما مثل حافظه آدرس صفر، یک، دو، سه،
چهار، پنج.
بنابراین ما می توانیم آدرس حافظه مجموع.
>> و این معمولا چیزی است که شما زمانی که شما در آرایه و هستید، به عنوان مثال.
یک آرایه است درست مثل به هم پیوسته بلوک از حافظه، از تعداد زیادی از کاراکتر،
برای مثال، بسیاری از وقفه.
بنابراین اگر شما می خواهید برای رفتن به دوم بین المللی و یا به اعضای هیات سوم،
شما فقط می توانید چیزی را به طور خلاصه برای اولین بار آدرس، و شما در حال رفتن به گرفتن وجود دارد.
پس این است که واقعا برای آن مفید است.
>> و چیزی برای نگه داشتن در ذهن، هر چند،
که آن را نه فقط دوست دارم علم حساب معمولی در مفهوم
که اگر شما در حال خرید و فروش با، می گویند، یک ستاره بین المللی، و شما اضافه کردن 1 به آن،
پس از آن شما نمی خواهید برای اضافه کردن 1 به آدرس،
شما در حال رفتن برای اضافه کردن 4 به آدرس.
از آنجا که یک int 4 بایت است.
>> پس این است که درست مثل راه رفتن بر روی یک آرایه.
اگر ما یک آرایه از تعداد زیادی از نوع داده int و پس از آن ما سعی می کنیم برای رفتن به مرحله دوم،
آن را اساسا جمع آدرس یکی از اولین به علاوه 1.
اما که نمی خواهد be-- فقط اجازه دهید بگویم که آدرس یکی از اولین 4 است.
در اینجا، در این مورد.
و اگر ما خلاصه، پس این همان چیزی است که اتفاق می افتد.
در حال حاضر اعضای هیات.
اعضای هیات ایکس معادل 5.
X دارای ارزش 5.
و ما مقداردهی اولیه اشاره گر، اعضای هیات Y ستاره y هوشمند برابر آدرس X.
>> بیایید فرض کنیم آدرس * 4 است.
چه اتفاقی خواهد افتاد در حال حاضر اگر من خلاصه اضافه کردن 1 به y؟
آن را به واقع مجموع 4 به جای فقط 1.
بنابراین من اضافه کردن 1، اما آن را در واقع اضافه 4، چون کامپیوتر هوشمند.
بنابراین آن را به واقع توسط من بار به اندازه نوع اشاره گر.
OK؟
>> بنابراین اگر آن را به یک کاراکتر بود، به عنوان مثال، اگر این ستاره Y کاراکتر بودند،
و اگر ما اضافه 1 سپس این امر 5، به دلیل کاراکتر است 1 بایت طول دارد.
خوب است؟
>> و در نهایت، ما به کردم اشاره گرها و آرایه ها.
به نظر می رسد که هر بار شما در حال برخورد با یک آرایه،
شما در واقع با اشاره گر خرید و فروش.
دلیل مفهومی بسیار زیبا برای این است که آرایه های بسیار بزرگ هستند.
بنابراین به یاد داشته باشید که من گفتم که هر بار که شما عبور چیزهای اطراف،
شما همه چیز را کپی کنید.
بنابراین اگر شما یک آرایه که واقعا، واقعا بزرگ،
شما واقعا می خواهید به کپی همه چیز را در هر زمان
شما آن را تصویب اطراف خود را به دیگری تابع، چرا که فقط
حجم انبوهی از کار.
بنابراین آنچه شما انجام فقط گذشته است آدرس اولین بایت.
و سپس تابع دسترسی داشته به تمام عناصر در آرایه که.
بنابراین شما آرایه از طریق آدرس آن گذشت، بنابراین آدرس اولین بایت.
>> بنابراین اگر ما از نوع int اعلان آرایه 3، در اینجا، ما می دانیم
چگونگی دسترسی به عنصر اول با استفاده از نماد براکت.
اگر شما به یاد داشته باشید براکت نماد، آرایه براکت 0 برابر 1.
خوب، این خواهد بود دقیقا همان فقط به آنجا رفت و قرار 1.
OK، دقیقا همان چیزی.
بنابراین نماد براکت در اینجا همان خواهد بود که این خط.
>> و حدس بزنید چه نماد براکت برای آرایه براکت 1 خواهد بود؟
آن را فقط به همان چیزی که به عنوان این خواهد بود.
به همین دلیل یک به آرایه اضافه کنید.
یک همراه در حافظه حرکت می کند.
رفتن وجود دارد، قرار داده و 2.
OK؟
و این خط همان چیزی نیست.
ما می خواهیم برای رفتن به سوم جعبه، بنابراین آرایه به همراه 2.
رفتن وجود دارد، قرار داده و 3.
بنابراین در حافظه، چه اتفاق خواهد افتاد این است که ما هستیم
رفتن به 1، 2، و 3 عنوان سه عنصر از این آرایه.
>> ما می توانیم با استفاده از این انجام داده اند نماد براکت آشنا کنیم.
من فقط می خواهم شما بدانید که بچه ها که آنها همان چیزی هستند.
OK، سوال در مورد این؟
خوب است.
در حال حاضر، من قصد دارم به دست آن را به هانا،
>> هنا: ماهواره، یی بلند.
>> BINKY: صحبت کردن در مورد حافظه و چیزهای مقاله.
[تشویق حضار]
>> هنا: سلام، سرد، بنابراین ما رفتن به صحبت کمی بیشتر
در مورد حافظه، که ما فقط خطاب با استفاده از اشاره گر.
بنابراین دو بخش اصلی وجود دارد حافظه است که ما نگران هستیم.
ما پشته، که رشد می کند در پایین، و پشته، که
از بالا به پایین می رود.
و پشته است که برای برگزاری همه متغیرهای نمونه است.
بنابراین هر فراخوانی به تابع می شود قاب کوچک خود را بر روی پشته.
بنابراین به عنوان گیب زودتر اگر ما اشاره شد، تابع دوباره و دوباره تماس بگیرید،
ما در حال رفتن به پشته همه چیز را در پشته.
>> و به همین ترتیب، پشته، که در بالای شروع می شود
در حال رفتن به برگزاری همه از حافظه که ما به صورت پویا اختصاص دهند.
و به این ترتیب به عنوان ما به صورت پویا تخصیص حافظه،
این را به سمت پایین می آیند.
همه چیز زن و شوهر که به هنگام آگاه ما با استفاده از پشته و توده،
با پشته، اگر ما بیش از حد many-- اجازه دهید say-- تماس بازگشتی،
و ما خواستار یک تابع دوباره، و دوباره، و دوباره، و دوباره،
و آن را انباشته کردن، انباشته کردن، انباشته کردن.
و آن را به سقوط پشته.
ما قصد داریم برای اجرا از حافظه است.
رفتن که باعث یک مشکل برای کامپیوتر.
و این سرریز پشته نامیده می شود.
به طوری که قطعا چیزی است که شما باید آگاه باشند و سعی کنید برای جلوگیری از.
و پشته، باید به یاد داشته باشید به طور تصادفی نشت حافظه.
هر بار که شما با استفاده از malloc، نه فراموش رایگان است که حافظه است.
در غیر این صورت، آن را فقط در پشته تلف شود،
و کامپیوتر نمی دانند که آن به رایگان استفاده کنید که حافظه است.
بنابراین کسانی که یک زن و شوهر از چیزهایی هستند باید بسیار مراقب باشید زمانی که با
شما با خرید و فروش پشته و توده.
هر گونه سوال با این؟
بسیار جذاب است.
>> OK، سرد.
بنابراین این نوع از همان ایده به عنوان سرریز پشته، که در آن
ما در حال فراتر رفتن از مرزهای آنچه حافظه
ما قرار است که قادر به استفاده از.
بنابراین، به عنوان مثال، یک بافر، و یا شما می تواند فقط از آن به عنوان یک آرایه فکر می کنم.
و ما گفت، OK، ما قصد داریم به ایجاد این آرایه کمی خوب.
این رفتن به یک رشته است.
و یا آن را به ذخیره حرف می باشد.
و آن را فقط رفتن به سلام.
و این رشد نامحدود.
همین.
>> اما اگر من به کسی بد بود و به خواست انجام کاری بد با این آرایه، چه
من می توانم انجام شده است سعی کنید به نوشتن گذشته از پایان رشته.
و به عنوان شما را ببینید، اگر من به اندازه کافی دور ارسال،
من در واقع می تواند تحت تاثیر قرار دهد آدرس برگشت.
و اگر من شروع به تحت تاثیر قرار آدرس برگشت،
من را تحت تاثیر قرار چگونه برنامه در واقع اجرا می شود.
و به جای بازگشت، شما می دانید، یک رشته شاد مانند سلام، من
می تواند چیزی بد انجام دهید، مانند رفتن به در جایی دیگر در کامپیوتر شما، هنوز هم
حافظه، آن را تغییر دهید، هر آنچه که می خواهید انجام دهید.
بنابراین این چیزی است که این را می خواهم نگاه است اگر من فقط نوع آن را پر کردن
با ارزش زباله تصادفی، در این مورد، فقط یک.
و پس از آن زمانی که من در واقع رو به آدرس حافظه،
من شروع به پر کردن آن را با چیزی که آنچه را که من می خواستم آن را به انجام.
هر گونه سؤال با سرریز بافر؟
عالی، پرواز راست از این مسائل.
>> OK، بنابراین ما صحبت زیادی از درباره اشاره گر با گیب.
چگونه ما در واقع یک اشاره گر را دریافت کنم؟
چگونه یک آدرس در حافظه ما را دریافت کنید؟
خب، ما می توانیم این خوبی استفاده کنید تابع malloc تماس، که
است رفتن به دریافت قسمت کوچکی از حافظه،
به طور خاص در پشته، به عنوان مورد بحث ما،
و آن را به شما را بدهد اشاره گر به آن آدرس را در حافظه است.
و این استدلال که ما باید به به malloc
چقدر فضا در حافظه ما می خواهیم.
>> بنابراین شما می توانید اندازه در بایت را ببینید.
بیایید می گویند، برای مثال، و یا در واقع، در این مثال،
ما به اندازه کافی تخصیص فضا برای 10 عدد صحیح.
پس احتمالا آنچه که ما در حال رفتن به می خواهم برای قرار دادن در اینجا یک آرایه از اعداد صحیح 10 است.
بنابراین ما آن اندازه از نوع داده int، را که ما یاد گرفتیم چگونه بسیاری از بایت بود؟
دانشجو: 4.
هنا: 4، زیبا، و ما می خواهم از کسانی که 10 در یک ردیف،
به طوری که ما باید فضای کافی برای ذخیره تمام 10 عدد صحیح، در این مورد.
چیزی فوق العاده مهم است، هر زمان که شما malloc تماس بگیرید،
شما باید برای null به.
اگر شما برای null به نیست، خوب، malloc اگر آن را خارج از فضای اجرا می شود
و دیگر نمی تواند شما را از هر گونه حافظه بیشتر، از آن پوچ باز خواهد گشت.
بنابراین اگر شما بررسی نمی، malloc ممکن است پوچ بازگشت.
و پس از آن اگر ما را امتحان کنید ارجاع یک اشاره گر تهی،
ما در حال رفتن به یک گسل تقسیم بندی، که ما در مورد حال حاضر صحبت کنید.
بسیار جذاب است.
>> OK، سوالات با malloc؟
بله؟
>> دانشجو: آیا چک کردن پوچ [نامفهوم] آن را در مسابقه انجام نشده است؟
>> هنا: مطمئنا، این سوال بود آن را در مسابقه matter--،
امتیاز شما خاموش اگر شما برای null به نه؟
بله، شما نقاط فعال را دریافت کنید اگر شما برای پوچ بررسی کنید.
هر زمان که شما malloc تماس بگیرید، هر دو در مسابقه و psets خود و در زندگی واقعی،
شما باید برای null به.
سوال خوبی است.
>> گیب: اگر من را آزاد نمی کند؟
هنا: گیب می خواهد بداند چه اگر ما آزاد نیست.
آن موقع است که باید نشت حافظه در پشته است.
هر گونه سؤال دیگر؟
بله؟
>> دانشجو: آیا می توانم بیش از you-- سرریز بافر واقعی سریع دوباره؟
>> هنا: مطمئنا.
سوال این بود می توانید بیش از ما به سرریز بافر واقعا سریع است.
اجازه بازگشت به آن اسلاید.
بنابراین یک بافر، شما می توانید فقط از آن فکر می کنم به عنوان یک آرایه، درست است؟
شما باید برخی از فضای موجود در حافظه.
و هنگامی که ما برای اولین بار از آرایه ما ایجاد، ما می دانیم آرایه اندازه ثابت کرده اند،
یا بافر ما دارای اندازه ثابت.
>> بنابراین اجازه دهید در این مورد می گویند، ما باید فقط فضای کافی برای ارسال رشته خوش آمدید.
اگر ما گذشته که محدود به، اگر ما به گذشته چه آرایه ما گفت: آن را می تواند نگه دارید،
ما در واقع می تواند شروع نوشتن در حافظه
که کامپیوتر نمی می خواهند ما را به ارسال.
و به طور خاص، اگر ما ضربه چیزی شبیه بازگشت
آدرس تابع، که، مانند هر قطعه دیگر از حافظه،
فقط در جایی در خود کامپیوتر، شما می توانید
تغییر که و شروع به انجام کارهای بد.
پاسخ به سوال شما؟
عالی، هر چیز دیگری؟
بله؟
>> دانشجو: پس پشته [نامفهوم]، شما از پایین به بالا رفتن گفت.
در محدوده پشته، می کند حافظه رفتن از، مانند،
بالا به پایین مربوط به هر شکست؟
>> هنا: چگونه you-- انجام تسلیم به راب در این یکی.
>> راب: آن را در همان رشد خواهد کرد جهت پشته رشد می کند.
هنا: OK.
راب: پس من اشتباه می شود.
این است که رفتن به انتزاع.
هنا: OK.
راب: این درست است.
بنابراین اگر پشته در حال رشد است تا، سپس آن را generally--
ندارد به مانند این است. اما شما می توانید اعضای هیات ایکس اعلام کنند.
سپس شما اعلام y هوشمند.
سپس اعضای هیات ایکس به طور کلی خواهد بود پایین تر در پشته از y هوشمند.
اما این فقط یک واقعیت است.
که یک نکته مهم دانه را دوست ندارد.
>> راب: بنابراین سوال دوباره تنها شد چه اتفاقی می افتد هر فریم می سازد.
بنابراین هر تابع می شود قسمت کوچکی از پشته.
و از شما تا به، است که در آن قطعه کوچک، که در آن قاب،
ما می گویند که متغیرهای در آن قاب نیز حرکت به بالا.
سوال؟
>> راب: فقط به میکروفون است.
هنا: اوه، آره.
راب: من به شما صحبت می کنند.
هنا: اوه، بله، OK.
راب: استثنا است برای آرایه ها و ساختمانها،
که در آن آرایه ها، پایین تر شاخص در آرایه،
و در ساختمانها در بالاتر درست در ساختمانها
تضمین در آدرس پایین از یک مقدار بعد از آن در آرایه.
بنابراین کسانی که تضمین شده است.
اما هر متغیر خاص در، برای مثال، int x و y هوشمند در یک تابع،
هیچ رابطه ضروری وجود دارد بین آدرس خود را.
هنا: سوال دیگر بیش از اینجا؟
دانشجو: بنابراین در بافر جریان، تنها سرریز بافر
تنها زمانی رخ داد که شما اند، مانند، اختصاص داده
مقدار یک آرایه که پس از آن بیشتر است؟
مانند، می تواند به شما؟
بنابراین اگر شما برای درخواست چیزی از user--
>> هنا: MM-HM.
دانشجو: آیا می توانم آنها را به زور شما چیزی را پشت
که بزرگتر از هر شما برای آنها اختصاص داده ایم؟
هنا: مطمئنا، به طوری که سوال اساسا بود،
می تواند کاربر را به شما بدهد بیش از شما برای درخواست؟
دانشجو: آره.
هنا: خب، شما می توانید جلوگیری از کاربر را از انجام آن است.
شما به طور خاص می توان گفت نمی کنند من بیشتر از تعداد X توسط بایت را
من فقط به شما داده ام اتاق شماره X از بایت، ایکس تعدادی از شخصیت.
به طوری که چیزی است که شما می خواهید برای جلوگیری از است.
بله؟
چه تفاوتی بین است سرریز پشته و سرریز بافر؟
>> هنا: OK، بنابراین پشته overflow-- آه، چه
تفاوت بین پشته است سرریز و سرریز بافر؟
بنابراین ما می خواهیم از سرریز پشته فکر می کنم اتفاق می افتد زمانی که ما در واقع هستید
انباشته کردن این فراخوانی تابع.
بیایید می گویند شما باید یک تابع بازگشتی، چون ما می دانیم که هر زمان شما
تماس تابع، آن را می شود قاب خود را بر روی پشته.
>> بنابراین ما جمع کردن بیش از حد بالا، و پس از آن ما شروع به سرریز.
و ما با استفاده بیش از حد حافظه، و ما را در هر نقطه را ترک نمی کند.
ما را دریافت کنید که خطا.
>> سرریز بافر است در یک برنامه.
ما می خواهیم ممکن است لزوما اجرای خارج از حافظه در به همان شیوه
که ما ممکن است اگر ما انباشته تا بسیاری از فراخوانی تابع،
اما ما گذشته در حافظه ارسال که ما می دانیم که ما می توانید استفاده کنید.
و این اجازه می دهد تا ما را به انجام کارهای بد.
آره؟
>> راب: بله، شما ممکن است بخواهید فقط به این تکرار،
اما شما همچنین می توانید فکر می کنم از سرریز پشته
به عنوان مثل یک نوع خاص از سرریز بافر.
یا شما فقط فکر می کنم از شما پشته به عنوان یک بافر واقعا بزرگ است.
سپس هنگامی که شما سرریز شما پشته، این نوع مانند یک سرریز بافر.
اما سرریز پشته فقط یک مدت خاص استفاده می شود که در پشته
خود را مملو.
>> هنا: راست، پس به تکرار برای این ویدئو،
آن را به شما می تواند از سرریز پشته به عنوان فکر می کنم یک نوع خاص از سرریز بافر.
سرد؟
هر گونه سؤال قبل از ما بر روی بروید؟
بسیار جذاب است.
>> OK، سرد، پس بیایید در مورد صحبت برخی از پیام های خطا رایج است.
این چیزی است که دارد تا در آزمونها متعدد نشان داده شده است،
بنابراین چیزی که ارزش گرفتن نگاه دوم در.
من مطمئن هستم که شما مواجه می شوند هستم حداقل برخی از این
به عنوان شما انجام مشکل شما مجموعه.
بنابراین مطمئن شوید که شما می توانید صحبت کنید در مورد آنها در مسابقه.
>> بنابراین یکی از اولین است گسل تقسیم بندی.
و هر زمان که ما در سعی کنید برای دسترسی به حافظه
که ما برای دسترسی پذیر نیست.
بنابراین شما migh دیده اند، این، به عنوان مثال، در برک آوت.
اگر تشخیص برخورد بازگشت تهی، و پس از آن شما
تلاش برای انجام کاری با ارزش های پوچ،
کامپیوتر می دهد شما یک گسل تقسیم بندی.
بنابراین یکی، چیزی که مهم است به انجام به منظور سعی کنید برای جلوگیری از این
این است که همیشه برای null به.
>> ممکن است شما نیز دیده می شود اعلامیه ضمنی از تابع.
بنابراین این چیزی است که اتفاق می افتد زمانی که آلیسون به شما نشان داد
چگونه ما را یک نمونه، درست است؟
بنابراین اجازه دهید می گویند که ما به برخی از تابعی که تعریف می کنیم.
بیایید مکعب می گویند.
و می رود که در پایین عملکرد ما، تحت اصلی.
>> اگر ما فراموش می کنیم به کامپیوتر بگویید در مورد مکعب، هنگامی که تلاش می کند به مکعب اصلی تماس بگیرید،
کامپیوتر خواهد بود، مانند، خدای من.
من هیچ نظری ندارم که چه معناست.
من نمی دانم چه کاری انجام دهید، در اینجا.
پس از نمونه اولیه می گوید نگران نباشید.
من قصد دارم به شما بگویم.
>> آن را آمده است.
آیا به من داد نیست.
آیا به من یک اشاره تلویحی نمی دهد اعلامیه تابع.
بنابراین اگر شما این خطا، یک چیزی که شما در حال رفتن به می خواهید انجام دهید
است مطمئن شوید که شما نمونه شما.
OK؟
>> و آخرین اما نه کم، شناسه اعلام نشده
است که اساسا زمانی که شما سعی می کنید به استفاده از متغیر است که شما را اعلام نکرده است.
بنابراین ناگهان شما شروع گفت: مانند N به علاوه به علاوه.
و کامپیوتر می گوید چه N است؟
شما هرگز به من گفت ازت چیزی بود.
>> به همین دلیل یک چیزی که شما باید مطمئن شوید که شما انجام است که کامپیوتر چه N است بگویید.
بنابراین برای مثال، ممکن است N یک عدد صحیح.
و سپس شما این خطا اجتناب کنند.
هر گونه سوال در اشتباهات رایج؟
بله؟
>> دانشجو: برای ضمنی اعلامیه تابع،
می تواند آن را نیز که شما یکی حذف شود از کتابخانه ها قرار بود
شامل، و نه از نمونه؟
>> هنا: راست، به طوری که سوال این بود، می تواند شما
این خطا اگر شما نیز دریافت فراموش کرده شامل یک کتابخانه.
>> دانشجو: بله.
>> هنا: مسلما، چرا که در همان راه
که ما می خواهیم برای قرار دادن نمونه های ما قبل از تابع اصلی،
اگر ما یک کتابخانه، کسانی که می رویم اساسا شامل نمونه های اولیه،
شامل تعاریف از توابع.
سوال بزرگ است.
>> دانشجو: برای تقسیم بندی گسل، که همچنین می
اتفاق می افتد اگر ما، مانند، سعی برای دسترسی به یک متغیر،
مانند، در یک متفاوت [نامفهوم] از آن را در اعلام شد؟
هنا: مطمئنا، این کار را می کنیم دریافت گسل تقسیم بندی
اگر ما تلاش برای دسترسی به متغیر از دامنه؟
یک سوال بود که؟
دانشجو: بله.
هنا: زیبا.
پس احتمالا، شما در حال رفتن برای گرفتن خطا شناسه اعلام نشده به جای.
بنابراین آن را فقط رفتن به می گویند من نمی دانم چه چیزی است.
داغ، هر چیز دیگری؟
آره، خوب، زیبا.
>> همه righty، بنابراین بازگشت.
بنابراین من یک زن و شوهر بار ذکر که ما ممکن است سرریز پشته دریافت
به خاطر اینکه ما خواستار ما تابع بازگشتی تا چند بار.
ما در حال گرفتن تمام این پشته فریم، اه، اه، اه.
چه حتی یک تابع بازگشتی است؟
خوب، یک تابع بازگشتی است هر تابع که خود می نامد.
>> برخی از چیزهایی که از زمانی که شما آگاه در حال اجرای تابع بازگشتی،
فراموش نکنید که برای شامل حالت پایه.
مورد پایه است نقطه ای که ما به پایان برسد.
بنابراین، برای مثال، اگر ما در حال برنامه نویسی، ، می گویند، به صورت بازگشتی فیبوناچی،
ما می خواهیم مطمئن شوید که هنگامی که ما به 0 یا عدد فیبوناچی اول،
کسانی که دو عدد از این موارد، زیرا این وابسته نمی
بر روی چیزهایی که قبل آمد.
کسانی که به ارزش های خود را دارند.
>> برخی از جوانب مثبت به بازگشت است، که یک سوال ما در آزمونها گذشته دیده ام.
آنها می توانند به بیشتر منجر شود مختصر، کد زیبا.
و بسیاری از توابع، بسیاری از الگوریتم های مختلف،
در واقع خود را به بازگشت به من قرض بدهید.
تعریف آنها ممکن است بازگشتی به خودی خود.
بنابراین فیبوناچی است.
عاملی است.
مرتبسازی ادغامی است one-- همه چیزهایی که شما می توانید نگاه کنید.
OK، هر گونه سؤال؟
بله؟
>> دانشجو: آیا مورد گوشه شبیه به یک مورد پایه؟
و یا این است که برای برخی از دیگر نوع [نامفهوم]؟
>> هنا: مطمئنا، تا مورد گوشه است any-- تا
مورد گوشه همان حالت پایه است؟
مورد گوشه هر چیزی است که خود را کد ممکن است کمی رفتار متفاوت است.
مورد پایه است نوع مربوط، در که آنها مانند موارد خاص هستید
که شما می خواهید نگاه کنید.
اما این ایده از یک حالت پایه است که شما می خواهید تابع بازگشتی خود
برای متوقف کردن در برخی از نقطه.
این نمی تواند خود را برای همیشه لطفا برای تماس.
به آن نیاز دارد برای متوقف کردن در برخی از نقطه.
>> راب: بله، اغلب، موارد خود را پایه ممکن است نمونه هایی از پایگاه های گوشه.
>> هنا: راست، سرد، هر چیزی؟
>> دانشجو: آیا می توانید توضیح دهید پایگاه کمی بیشتر؟
من کاملا نمی دانند که [نامفهوم] مورد پایه.
>> هنا: از موارد پایه؟
>> دانشجو: موارد پایه، آره.
>> هنا: بله، مطمئن شوید.
بیایید ببینید.
آیا ما در اینجا بیش از گچ؟
بله، کار می کنیم.
خوب، پس واقعا به سرعت، من سعی کنید به اندازه کافی بزرگ ارسال
بنابراین شما می توانید بر روی صفحه نمایش را ببینید.
اجازه دهید بحث در مورد، واقعا سرعت، فیبوناچی.
بنابراین من به شما دنباله فیبوناچی می دهد.
شما می توانید نگاه کردن به تعریف.
>> اساسا، هر عدد در دنباله از مجموع دو عدد قبلی است.
OK، بنابراین راه است که من فقط توصیف فیبوناچی،
شما می توانید از بازگشت شنیدن، درست است؟
وقتی که من گفتم هر عدد است مجموع دو عدد قبلی،
ما می توانیم بگوییم OK.
خوب، فیبوناچی n ام number-- پس بیایید
می گویند ما باید این تابع نام فیبو fib-- از N
رفتن به برابر به دروغ گفتن است از N منهای 1 plus-- با عرض پوزش،
ما به خط بعدی رفتن بیش از فیبو here-- از n منهای 2.
>> خوب، پس این آثار بزرگ اگر شما نگاه، به عنوان مثال، صفر، یک،
دو، سه، چهار، تعداد پنجم فیبوناچی،
که در آن شما می توانید می گویند که 5 به 2 به علاوه 3 برابر است.
اما اگر شما در ابتدای هستید؟
چه می شود اگر شما فقط به هدف قرار دادن این دو مقدار اول؟
>> برای دریافت این 1، شما می توانید می گویند اضافه کردن دو مورد قبلی،
چرا که صفر and-- من نمی دانم.
بنابراین در برخی از نقطه، ما باید متوقف شود.
در برخی موارد، ما نیاز به گفتن نیست که این دو فقط باید تعریف خود را دارند.
تعداد 0 0 فیبوناچی است.
و عدد فیبوناچی اول 1 است.
>> پس راه من ممکن است این کد، I می گویند اگر n کمتر از دو است،
پس از آن فقط بازگشت N.
و این امر می تواند مورد پایه من.
این که چگونه من می دانم که برای متوقف کردن با یک تابع بازگشتی.
این است که روشن؟
بسیار جذاب است.
هر چیز دیگری به بازگشت؟
زیبا.
>> اجازه دهید به سرعت صحبت در مورد جستجو و مرتب سازی بر بار اجرا شود.
و پس از آن من خواهد شد برخی از داوین را زمان در مورد برنامه نویسی نمونه صحبت کنید.
بنابراین در اینجا جستجو های اصلی و انواع است که شما باید در مورد می دانیم.
Guarantee-- من می توانم تضمین نمی کند، چون من quiz-- دیده می شود نیست
اما این می آید تا مسابقه بعد از مسابقه، پس از ترک کنید.
بنابراین قطعا این نمودار استفاده کنید.
مانند، از این نمودار.
قرار دادن بر روی بازی ورق خود را.
شما یک فرد خوشحال.
>> این به ما می گوید از زمان اجرا از هر از این مرتب کردن و جستجوی الگوریتم باشد.
بنابراین جستجوی خطی، شما می توانید اجرا کنید ببینید زمان، و همین کار را با جستجوی دودویی.
برو بیش از این چیزی است که الگوریتم انجام، این ایده به طور کلی.
در برخی از شبه نگاه کنید، اگر خود کد نیست.
>> شما خواهید دید که مرتب سازی بر حباب دارد بالا محدود در بدترین حالت از N مربع.
بنابراین اگر آرایه ما به طور کامل بود عقب قبل از ما می خواست تا آن،
ما می گویند که این رفتن به مرحله N مربع.
اما در بهترین حالت، به طوری که پایین تر برای بهترین حالت محدود
در حال رفتن به اگر آن را در حال حاضر کاملا طبقه بندی شده اند.
سپس همه ما باید انجام دهیم این است بررسی کنید که آن را طبقه بندی شده اند.
یک سوال در اینجا وجود دارد؟
>> دانشجو: وقتی که شما می خواهید به استفاده از مرتب کردن بر اساس؟
مرتب کردن بر اساس.
من فقط کنجکاو هستم.
>> هنا: هنگامی که می خواهید مایل به استفاده از انتخاب مرتب سازی بر؟
این یکی؟
یکی که n در هر دو مورد مربع؟
>> دانشجو: [نامفهوم].
>> هنا: پس از آن بسیار متفاوت است.
اگر شما خاص الزامات مورد نیاز برای برنامه های خود را،
مثل چیزهایی مانند اگر ما فقط گفت: پیاده سازی یک sorry-- search--
پیاده سازی یک نوع، نظر شما احتمالا می خواهید برای رفتن
یکی از آنهایی که دارای بهترین حالت از N،
یا پایین تر در بهترین حالت از N محدود شده است.
اما ممکن است وجود داشته باشد چیزهای خاصی مانند، می گویند،
معاوضه واقعا گران قیمت برای برخی از دلیل.
سپس شما می خواهید انجام دهید مرتب سازی بر حباب، دلیل این که شما
را به انجام بسیاری از معاوضه، مانند آن.
هر بله other--؟
>> دانشجو: آیا آن را [نامفهوم] می گویند که [نامفهوم]؟
هنا: این یک چیز است که به شما خواهد گفت
اگر شما به دنبال در پیاده سازی.
راه من در واقع در مورد اینکه چرا این فکر می کنم N
مربع است که ما باید به اجرا از طریق آرایه ما از طول n،
هر زمان ساخت حداکثر، N سواپ.
و ما را مجبور به انجام این فرایند N بار.
>> بنابراین، هنگامی که شما باید در ترین، N معاوضه و برای N اجرا می شود از طریق آرایه،
رفتن وجود دارد به N مربع.
اما بله، این آشکار خواهد شد از طریق این دو حلقه،
به عنوان سوال asked-- یا تو در تو حلقه، من باید بگویم.
OK؟
>> و سپس مرتب سازی بر ادغام، که سریعترین مرتب سازی بر ما است در حال حاضر،
یا که ما در CS50 تحت پوشش ام، می دانیم که الگوریتم اصلی
این ایده از شکستن به قطعات مرتب شده و سپس
ادغام با هم این بیت طبقه بندی شده اند.
و ما را در ورود به سیستم N log n است.
هر گونه سوال در جستجو و انواع قبل از آن عبور من؟
بیایید ببینید.
>> اوه، لیست های پیوندی.
با عرض پوزش، من یک موضوع بیشتر است.
OK، جذاب، لیست های پیوندی.
مشکل با آرایه ها، آنها یک اندازه ثابت.
بنابراین اگر شما نمی دانید که چگونه بزرگ ورودی های خود را در حال رفتن به،
شما نمی خواهید برای ایجاد یک آرایه.
چرا که اگر ما ایجاد آرایه است که بیش از حد کوچک،
ما ممکن است به سرریز بافر را اجرا کنید.
>> بنابراین به جای آن، ما می تواند کاری انجام دهد با لیست های پیوندی، که
ما اجازه می دهد به صورت پویا ساختار داده ها به اندازه
اجازه می دهد که ما را به ذخیره مقدار قابل انعطاف تر از داده ها.
بنابراین در هر گره در ما لیست پیوندی، ما دو قطعه.
ما ارزش واقعی است که آن را ذخیره میکند.
به طوری که تنها چیزی که به شما خواهد بود در آرایه را مشاهده کنید، به عنوان مثال.
و سپس ما نیز پیگیری حفظ اشاره گر به چیزی که بعد از در حافظه است.
>> بر خلاف آرایه، که ما می دانیم که همه رفتن
به be-- عناصر آرایه همه یکی می شوند یکی پس از دیگری در memory-- مرتبط
لیست می تواند در هر نقطه از حافظه باشد.
آنها محل های دلخواه است.
بنابراین اگر ما به بود در واقع به پیدا کردن آنها، ما
نیاز به پیگیری از چیزی که بعد از در لیست ما است.
>> و پس از آن به منظور شناخت که در آن است که لیست را به عنوان یک کل است،
همه ما باید برای پیگیری است عنصر بسیار برای اولین بار در لیست پیوندی ما.
و است که شما اجازه می دهد تا ما را به دنبال از طریق.
>> پس این است که چگونه ممکن است یک حالت را تعریف کنیم.
این یک فرصت بزرگ است را به استفاده از ساختمانها.
از آنجا که شما این ایده، به خوبی، برای یک گره داده شده، من دو قطعه.
من ارزش واقعی خود را.
و پس از آن من یک اشاره گر به عنصر بعدی که در لیست پیوندی.
بنابراین می بینید، ما یک نفر عدد صحیح، که برای رفتن به ارزش واقعی،
و پس از آن یک اشاره گر به یک گره، به نام آینده.
به طوری که رفتن به بعدی عنصر در لیست پیوندی ما.
دانشجو: بله؟
آیا شما مشخص است که ستاره مانند یک ساختار است؟
>> هنا: بله، بنابراین از آنجا که این است که تقریبا مانند یک نوع،
آن را مانند یک بازگشتی به نظر می رسد تعریف که ما در
باید بدانید که چه یک گره است در داخل به پیدا کردن یک گره.
از آنجا که این کار در واقع نه می دانم آنچه که یک گره به طور کامل
تا زمانی که ما به پایان this-- دریافت و بعد از این که ما فقط می توانید آن را
node-- داخل این تعریف، ما نیاز به آن را یک گره ساختار.
سوال بزرگ است.
هر چیز دیگری؟
بله؟
>> دانشجو: چرا ما باید بگویم گره دو بار؟
چون وقتی ما در بود [نامفهوم] ما فقط تا به حال به آن را در نقطه و ویرگول،
اما در حال حاضر ما برای پیدا کردن که گره ساختار؟ [نامفهوم].
هنا: بنابراین من معتقدم در گذشته به عنوان مثال،
ما فقط ایجاد شد در هر زمان شما خواست به استفاده از یک دانش آموز پس از آن، شما
مجبور به استفاده از ساختار node-- من sorry-- دانشجویی ساختار.
این به ما اجازه، پس از واقع، فقط گره استفاده اضافه کردن یک نوع جدید، اساسا.
که معنی؟
بنابراین ما می خواهم برای رفتن به عقب و در نگاه قبل از کد.
اما من حدس می زنم که ما استفاده نمی typedef.
و سوال ما خواسته، چرا ما نیاز به استفاده از typedef؟
Typedef اجازه می دهد تا ما را به اجتناب از ساختار کلمه در آغاز راه است.
بله؟
دانشجو: چه نوع پرسش خواهد آمد تا
از لحاظ در نظر گره ها و لیست های پیوندی؟
>> هنا: بنابراین یک چیز این است که ما می گویند که چگونه ممکن است شما را از طریق یک لیست پیوندی جستجو؟
OK، زیرا این کمی پیچیده تر است
از اگر ما جستجو از طریق یک آرایه.
ما فقط می تواند در عنصر صفر نگاه کنید، عنصر یک عنصر دو، اه، اه،
اه.
اگر ما می خواهیم برای جستجو از طریق یک لیست پیوندی،
ما در واقع می خواهم که به دنبال این پیچ و خم کمی از اشاره گر.
بنابراین اجازه دهید در واقع به از طریق این واقعا به سرعت.
آنچه که ما می تواند انجام دهد در سفارش to-- اجازه دهید ما می گویند
می خواهید فقط از طریق تکرار لیست به طور کامل مرتبط است.
ما را در سر شروع می شود.
و پس از آن به منظور حرکت به عنصر بعدی،
به جای فقط افزایش توسط یکی مثل ما ممکن است در رفتن را از طریق یک آرایه،
ما در واقع به رفتن دنبال اشاره گر بعدی،
بنابراین ما می توانیم پیدا کردن جایی که در حافظه عنصر بعدی است.
بنابراین من می دانم آن را به اندازه کافی به را این همه در حال حاضر،
اما شما این اسلاید را داشته باشد.
بنابراین شما می توانید از طریق رفتن این کمی آهسته تر.
اما در اصل، آنچه ما می خواهیم برای انجام این کار است به دنبال این اشاره گر
از طریق کامل از لیست پیوندی.
بنابراین مسئله این است شما ممکن است خواسته شود.
>> چیزی برای توجه با درج، اجازه دهید می گویند
ما می خواستیم به قرار دادن یک عنصر جدید در مقابل لیست پیوندی ما.
ما باید بسیار مراقب باشید در مورد جهت که در آن ما
اشاره گر منصوب.
از آنجا که اجازه دهید بگویم من فقط گفت: OK.
را نقطه سر به این عنصر جدید.
فقط آن را به نقطه 1 سپس مطمئن، ما اساسا از دست داده بقیه لیست ما،
چرا که من در آن زندگی 2 به یاد داشته باشید.
>> بنابراین ما باید انجام دهیم در جهت بسیار خاص است.
اول، ما به جدید نقطه عنصر به سر.
و سپس ما را سر اشاره به این عنصر جدید.
بنابراین اجازه دهید ببینیم که چه چیزی است که به نظر می رسد با arrows-- فقط می خواهم که.
بنابراین شما اول جدید نقطه عنصر به سر قدیمی.
و در حال حاضر، ما باید سر اشاره به عنصر اول جدید.
هر گونه سوال با این؟
>> OK در اینجا برخی از کد چیزی دوباره، در کمی بعد نگاه کنید.
و در حال حاضر من آن را به نوبه خود داوین برای GDB و کمی از عمل
برنامه نویسی بر روی کاغذ.
زیبا.
>> راب: و راب.
>> هنا: اوه، داوین و راب.
من متاسفم.
>> دانشجو: وو!
>> راب: تشکر.
>> داوین: آیا شما می خواهید برای گفتن همه چیز سریع واقعی است؟
راب: آره، آره.
داوین: هنگامی که من از بالا.
OK، در حالی که راب قرار می دهد میکروفون، تا چه GDB است؟
هر کس باید در GDB را دیده اند کلاس و نیز در ساعات اداری.
و شما باید با استفاده از آن می شود.
پس چه GDB است؟
هر کسی؟
>> دانشجو: این یک اشکال زدا است.
>> داوین: این یک اشکال زدا است.
و چه آن را به شما اجازه انجام دهید؟
مانند، چرا ما GDB دوست؟
دانشجو: به کم کردن سرعت برنامه است.
داوین: درست است، بنابراین شما می توانید به راه رفتن از طریق آن را مانند یک سرعت انسان است.
و به این ترتیب چه هستند برخی از دستورات شما می توانید انجام دهید؟
خوب، استراحت است که احتمالا فرمان مورد علاقه خود را.
از آنجا که به شما امکان شکستن برنامه و در واقع از طریق آن راه رفتن
خط به خط.
>> اجرای اجازه می دهد تا شما را به آن را اجرا کنید.
در مرحله بعد، مانند پله را از طریق.
اون چیزی که بین بعد و مرحله است؟
صبر کنید، می گویند که با صدای بلند.
این درست بود.
>> دانشجو: [نامفهوم].
>> داوین: بله، بسیار جذاب است.
بنابراین مانند، در کنار هم گام، اگر you're-- اجازه دهید بگویم که شما یک تابع شما
تعریف.
بیایید می گویند برخی در تابع اصلی، و شما فقط ضربه بعدی، بعدی،
بعدی.
شما در واقع به رفتن اجرا که تابع،
اما شما به انتخاب بیش از آن.
اگر شما ضربه گام، یا و یا هر چیز دیگری، شما
رفتن به واقع پرش به این تابع،
و سپس شما می توانید در کنار ضربه برای دیدن تماس های مختلف
در داخل آن تابع خاص است.
آره؟
>> دانشجو: آیا راهی وجود دارد برای پرش، مانند، عقب از؟
داوین: پایان، آره، پایان با تو پرش.
بنابراین آن را به پایان برساند که تابع، و سپس شما هستید
رفتن به پشت در اصلی، به عنوان مثال.
آن را چاپ کنید چاپ خواهد شد یک زمان.
چیزی است که من همیشه استفاده از صفحه نمایش است.
نمایش آن را چاپ خواهد کرد به طور مداوم در طول کل
از برنامه های خود را.
>> به عنوان مثال، اگر شما در یک حلقه for و شما
خواهید دید که چگونه چیزی در حال تغییر، و شما را به مانند، نمی خواهند به طور مداوم
مانند چاپ انجام می دهند، چاپ، چاپ، صفحه نمایش
خواهد شد که متغیر نمایش به طور مداوم، در هر زمان به شما ضربه بعدی.
و ادامه دهید.
بنابراین GBD، که GDB است.
>> دانشجو: یکی از چیست که در آن شما [نامفهوم]؟
داوین: آن چیست؟
>> دانشجو: چه the-- است متغیرهای محلی.
راب: چیزی است که در واقع وجود دارد مانند مردم محلی و یا چیزی.
من can't--
>> داوین: شاید چیزی شبیه به آن، آره.
>> هنا: در مردم محلی؟
>> داوین: که در آن است.
که یکی است.
راب: زیبا.
>> داوین: آره.
>> دانشجو: چه ادامه انجام دهید؟
>> داوین: این continues-- بنابراین آن را فقط رفتن به برنامه های خود ادامه خواهد داد.
بنابراین اگر شما شکستن و آمار ادامه، این رفتن
درست است که برنامه را اجرا کنید تا از آن بازدید که استراحت دوباره.
بنابراین به عنوان مثال، اگر شما شکست در یک تابع،
و شما در حال رفتن به مانند برای انجام حلقه و یا چیزی شبیه به آن،
و به شما ضربه ادامه، آن را به ادامه و بازگشت به که شکسته.
یا هیچ استراحت، آن را به وجود ادامه و پایان برنامه است.
>> راب: پس فقط دوست توقف اجرا در نقطه انفصال اول
به شما ضربه، اگر شما پس از آن آسیب، آن را نگه دارید
رفتن تا زمانی که نقطه انفصال بعدی است.
و پس از آن ادامه خواهد داد به به نقطه انفصال بعدی.
داوین: هر گونه سؤال دیگر در GDB؟
بنابراین من در گذشته فکر می کنم، ما از شما خواسته ام چه
GDB است و به به عنوان مثال برخی از چیزهایی که شما
می توانید با GDB انجام دهید، تا ساده واقعی است، اما آره.
شما بروید وجود دارد.
و گره؟
>> راب: بله، تا که جهت آن بود؟
دانشجو: که در آن بود.
داوین: صبر کنید.
راب: این مرد؟
داوین: این یکی.
راب: این مرد، آه، من نمی دانستم.
بنابراین ما روشن نمی شد در چه the-- من نمی
می دانیم که آن را was-- اما سوال.
ما دقیقا همان چیزی را نمی دانم شما در مورد آن درخواست شد، بنابراین فقط
برای روشن شدن چیزی.
پس اول، مثل من گفت: قبل از، typedef شما همیشه با استفاده از تنها
ایجاد یک نام مستعار برای یک نوع.
پس حق در اینجا، نام مستعار ما ایجاد است برای این نوع گره ساختار.
>> پس اول، نادیده گرفتن این گره در typedef، بنابراین این گره مجعد ساختار
بند را به مجعد بعدی بند نوع گره ساختار است.
و ما به آن گره نیاز وجود دارد، چرا که ما
نیاز به مرجع گره در اینجا.
بنابراین با این نوع از ساختار بازگشتی، شما نیاز دارید را در این ساختار یک نام،
و یا دیگری شما می توانید نه می گویند گره ساختار در اینجا.
در حالی که پیش از این با دانش آموز زمانی که ما تایپ شده اند، من فکر می کنم،
لازم نیست برای گفتن دانش آموز وجود دارد، چرا که ما
لازم نیست برای گفتن ساختار دانش آموز در داخل ساختار خود را.
پس از آن بازگشتی است که نیروهای ایالات متحده می گویند گره وجود دارد.
>> این گره فقط به نام ما است دادن گره برای typedef.
به طوری که گره است همان است که گره.
اما این گره ساختار است همان است که گره ساختار.
داوین: بنابراین هر زمان که با شما تماس، مانند، گره در تابع اصلی،
شما به رفتن نیست باید بگویم گره ساختار.
شما فقط می توانید می گویند گره، به دلیل گره different-- است که اساسا
شما می گویید، OK.
به جای داشتن به تماس گره ساختار در کد من،
من فقط می خواهم به آن را تغییر نام دهید به عنوان گره به آن را آسان تر است.
>> راب: اگر شما همیشه استفاده از typedef، پس از این
تنها مکانی که شما قصد داشته است اعلام یک متغیر با ساختار گره
ستاره، آره.
>> داوین: OK، بنابراین قسمت آخر سخت به تدریس است because--
راب: چه؟
>> داوین: از آنجا که آن را به برنامه نویسی بر روی کاغذ.
بنابراین هر سال ما کد مقاله در مورد مسائل.
بنابراین من فکر می کنم در سال گذشته، 12 نفر از 80 امتیاز کد بر روی کاغذ بود.
سال قبل از آن، 10 از 80، سال قبل از آن، 20 نفر از 100،
بنابراین کاملا چند از این.
بنابراین شما به باید قادر کد تا این توابع با دست.
>> بنابراین من نمیفهمد که ما ممکن است از طریق به زن و شوهر از آنها را و ببینید که چگونه مردم انجام دهد،
نوع از طریق راه رفتن آنها را به آرامی با مردم است.
بنابراین به طور کلی، strlen و atoi اند بسیار محبوب شده است.
در سال گذشته، من فکر می کنم ما تا به حال GetPositiveInt و RandomInt.
اما صدای انفجار، بنابراین قدرت، همچنین مثبت بیش از حد.
بیایید فقط از طریق شاید به یک یا دو تا از این با هم.
مردم چه می خواهید برای دیدن؟
>> دانشجو: Atoi.
دانشجو: آره.
داوین: Atoi؟
دانشجو: [نامفهوم].
داوین: OK، من قصد دارم به انجام آن در هیئت مدیره.
آیا ترجیح شما اگر من آن را در اینجا و یا وجود دارد انجام دهید؟
وجود دارد، گیب می گوید وجود دارد.
>> راب: و این افکار عمومی است در این سوالات برنامه نویسی.
سعی کنید چیزی بنویسم.
آیا آن را خالی نگذارید.
>> داوین: بله.
راب: اگر شما می توانید بازگشت نوع صحیح،
یا شاید ما ممکن است آن را به من بدهید شما، اما اگر شما می توانید، مانند،
ارسال امضا تابع به طور کلی، اگر شما می توانید موارد پایه درست کنید،
و یا موارد این گوشه میمیره، یا به خاطر سپردن چک برای تهی،
تا زمانی که شما باید برخی از همه چیز، پس شاید ما
می تواند شما را یک زن و شوهر را امتیاز برای این مشکل است.
آیا فقط آن را ترک خالی.
>> داوین: بله، و اگر شما فقط به طور کامل
متوقف کرد که چگونه به در واقع به کد تبدیل شود.
اگر شما شبه، که خیلی خوب است بیش از حد.
پس از آن، مانند آن است که یک سوال شش نقطه است، و شما ارسال شبه درست است،
شما در حداقل دو امتیاز دریافت کنید.
بنابراین نه تنها آنها را خالی بگذارید.
سعی کنید برای قرار دادن چیزی.
>> راب: این نیاز به شبه درست است، هر چند.
>> داوین: بله.
راب: بنابراین ما به طور کلی کمتر برخورد با اشکالات در شبه.
داوین: OK، بنابراین شما بچه ها می خواستم ببینم atoi.
OK، بنابراین فقط really-- پس چه می خواهید انجام دهید
است که شما برای رفتن به با توجه به نوعی از تعداد.
اما این تعداد نیست رفتن به یک int، درست است؟
چه آن که برای رفتن به؟
>> دانشجو: [نامفهوم].
>> داوین: این رفتن به یک رشته، درست است؟
بنابراین اگر شما داده شد string-- اجازه دهید say--
>> راب: باید بکشد تا یک ویرایشگر؟
من می توانید بکشید up--
>> داوین: آه، شما می خواهید این کار را انجام on--
>> راب: آیا هیئت مدیره شما ترجیح می دهید؟
>> داوین: چه می خواهید انجام دهید؟
منظور من، آیا می خواهید آن را با دست؟
و یا می خواهید آن را با کامپیوتر؟
>> راب: آیا آن را با دست.
>> داوین: [می خندد]
راب: آیا آن را با دست.
>> داوین: OK، پس از آن خواهد بود atoi.
پس چه it-- منظور من، ما به شما احتمالا این را به شما بدهد.
اما آنچه در آن به بازگشت؟
>> دانشجو: متوسط.
>> داوین: این رفتن برای بازگشت متوسط، درست است؟
So-- من نمی خواهم به آن وجود دارد.
من آن را در اینجا انجام دهید.
>> راب: شما می توانید آن را پایین بکشد و سپس فشار تا بر روی آن.
>> داوین: آره.
[می خندد] تغییر بازی.
OK، پس از آن خواهد بود atoi متوسط، و آنچه در آن رفتن به؟
ستاره کاراکتر، به طوری که فقط یک رشته، ستاره ها، که می خواهم.
>> راب: ستاره زیبا و خوب است.
داوین: این ممکن است وجود داشته باشد، OK.
راب: آره.
داوین: OK، بنابراین اول چیزی که شما می خواهید به do-- من
نمی دانم اگر کسی نگاه در solutions-- عمل
اما آنچه قصد دارید می خواهید انجام دهید این است که شما هستید
رفتن به می خواهم به یک حلقه، چون تو
رفتن به خواهید به واقع گام به گام از طریق این رشته.
بنابراین helpful-- پس بیایید می گویند ما در حال رفتن به یک حلقه،
و ما در حال رفتن به مرحله از طریق هر عنصر از رشته.
چه مدت است؟
چند بار می خواهیم به تکرار در آن حلقه؟
دانشجو: Sterln؟
داوین: Sterln، آره.
بنابراین اجازه دهید می گویند طول اعضای هیات برابر sterln است.
و فقط کنجکاو، به همین دلیل آن این است که همیشه نوع از بهتر برای انجام این کار در خارج از حلقه؟
مانند، چرا آن را بهتر به تماس این تابع خارج از حلقه؟
فقط عقل سریع چک کنید؟
آره؟
دانشجو: بنابراین شما انجام نمی به نگه داشتن چک کردن آن.
شما فقط می توانید [نامفهوم].
>> داوین: دقیقا، بنابراین آره، دقیقا همان چیزی است که او گفت.
بنابراین ما مجبور به نگه داشتن چک کردن آن.
بنابراین برای مثال، اگر من خواستار این تابع در داخل یک حلقه،
سپس من قصد دارم برای حفظ تماس این تابع چندین بار.
و این که در آینده به کاهش بهره وری از برنامه های خود را.
پس از آن همیشه مفید است آن را اعلام خارج.
>> راب: این گفت، در هر یک از این مشکلات،
تقریبا تا زمانی که شما دریافت راه حل کار می کند، شما اعتبار کامل دریافت کنید.
پس وقت را اگر طراحی شما نگران نباشید کاملا وحشتناک است.
این ممکن است ما ناراحت است خواندن کد شما.
اما تا زمانی که کار می کند، شما امتیاز دریافت کنید.
>> داوین: بله.
OK، بنابراین پس از آن من قصد دارم به اعلام برخی از متغیر.
این فقط به تماس بین المللی جمع.
و من قصد دارم به این مجموعه برابر با صفر، مانند آن.
و این فقط رفتن به یک حفره یا سوراخ.
به طوری که برای رفتن به آنچه که من قصد دارم به بازگشت.
بنابراین من قصد دارم به نهایت بازگشت مجموع از این برنامه است.
بنابراین من این دو متغیر.
من طول داشته باشد.
من جمع.
و در حال حاضر اجازه دهید به رشته ما بروید.
>> بنابراین اجازه می دهد که ما برای حلقه.
بنابراین چهار نوع int I برابر با 0 W، در حالی که من کمتر از طول به علاوه من اضافه شده است.
و now--
راب: خوب.
داوین: OK، و در حال حاضر در اینجا می آید گوشت از کد ما.
بنابراین شما در واقع می توانید انجام دهید این اساسا در یک خط.
بنابراین کسی یک ایده از آنچه که ما در حال رفتن به کار بعدی؟
OK، به طوری که OK.
بنابراین ما در حال انجام برای گفتن مجموع equals-- اجازه دهید من این مبلغ over-- لیز خوردن
برابر است با حاصلضرب مجموع 10 plus-- ما رفتن به بازدید کنندگان من منهای یک
نقل قول نقل قول 0 یک انجام می شود، مانند آن.
راب: بسیار بصری.
>> داوین: معادن سنگ آن.
OK، بنابراین someone-- من آن را کردم، من آن را کردم.
خوب، پس این است که به وضوح بالا رفتن.
این به چه معنی؟
بنابراین آیا کسی می داند این به این معنی؟
همه می بینند این؟
نه، هیچ کس نمی تواند این را ببینید، OK.
من قصد دارم to--
>> راب: من قصد دارم به نوشتن فرمول فقط در اینجا ببینید.
داوین: OK، راب رفتن به آن را انجام دهید در کامپیوتر است که سرگرم کننده است.
راب: اوه خدای من.
و یا من نمی خواهد.
داوین: پایه های.
دانشجو: من یک سوال.
داوین: آره، مطمئن شوید.
دانشجو: [نامفهوم]؟
داوین: OK، پس از آن در واقع، می خواهم، فقط به طور کلی،
اگر شما به قرار داده، مانند، در این نوع int اعلان
من برابر با طول 0 کاما برابر sterln، that--
>> دانشجو: [نامفهوم].
>> داوین: این خوب است، زیرا that--
دانشجو: چرا شما حتی نیاز به استفاده از طول؟
چرا که نه می تواند ما فقط [نامفهوم] sterln S، مانند کل زمان [نامفهوم]؟
>> داوین: شما به معنای حق در اینجا؟
>> دانشجو: بله.
داوین: از آنجا که هر زمان این حلقه for اجرا می شود،
آن را برای ارزیابی این وضعیت.
دانشجو: راست.
داوین: و اگر sterln وجود دارد، سپس آن را
رفتن به واقع تماس بگیرید که تابع هر بار تنها.
بنابراین به جای فقط مقایسه آن با متوسط،
شما به تماس شود تابع و سپس مقایسه آن
به مقدار بازگشتی.
آره، بنابراین آن را فقط، آره.
>> خوب، OK، بنابراین در حال حاضر هر کسی می تواند آن را ببینید.
چه does-- این مثل این است.
این مربا است، حق در اینجا.
به چه معنا است؟
چه هستم؟
بله، ایده؟
آره؟
>> دانشجو: خوب، تا زمانی که شما در حال ورود به یک آرایه،
شما در حال رفتن به رفتن از چپ به راست،
بنابراین شما در حال رفتن به در رفتن دهدهی از پایین [نامفهوم].
داوین: دقیقا.
دانشجو: پس هر یک شما باید به ضرب
آنچه شما به عنوان ارزش های بین المللی شاهد زمان شما را وادار به حرکت می کند که بیش از یک.
>> داوین: کامل، کامل، به عنوان مثال، اجازه دهید
می گویند من به you-- من رفتن به ارسال بیش از اینجا.
نه، من نیستم.
من قصد دارم به ارسال بیش از اینجا.
اجازه دهید بگویم من به شما داد 76، درست است؟
اجازه دهید بگویم من به شما را 76.
که یک رشته برای شروع با است، OK؟
>> بنابراین طول چیزی است؟
2، درست است؟
مجموع 0 است.
پس از آن ما در ما حلقه پرش.
OK، تکرار اول این، چیزی است که آن را برای رفتن به؟
این رفتن به مجموع 0 است.
بنابراین جمع بار 10 0.
که بی معنی است.
سپس چه انجام این کار؟
دانشجو: [نامفهوم].
>> داوین: این رفتن به نوبه خود که شخصیت به یک عدد صحیح، درست است؟
این نوع مانند با شما مشکل set-- این light--
این نوع مانند با مشکل را به VISIONEER.
شما با خرید و فروش مقادیر ASCII.
بنابراین اگر من به تو، مثل، هفت، اما این شخصیت،
و شما می خواهید بدانید، OK، چه رقمی است؟
بله، شما می توانید، آره.
پس چه رقمی است؟
شما می توانید از آن تفریق 0، اما شما به تفریق 0، شخصیت.
>> و که در آن برخی از مردم دریافت .ی، آنها هستید
مانند، OK، خوب، من باید بدانید ارزش ASCII برای این مسابقه؟
نه، شما قطعا نمی کنند نیاز به دانستن ASCII
ارزش، مانند، کوچک ، حروف بزرگ A، صفر است.
>> راب: هیچ دلیلی وجود ندارد تا کنون قرار دادن این در بازی ورق.
>> داوین: قطعا انجام نمی هدر فضایی خود را با این.
شما می توانید فقط به جای literally-- گفتن 48، مانند سمت راست
وجود دارد، که معادل است گفت: یکی، یکی آپوستروف،
مانند آن، دقیقا همان.
>> راب: شما تقریبا می تواند فکر می کنم از آن به عنوان if-- خدا، من باید من،
oops-- شما تقریبا می تواند از آن فکر می کنم به عنوان اگر ما چیزی شبیه به آن هش
تعریف 0 48.
که کار نخواهد کرد.
اما از آن فکر می کنم به عنوان تنها نقل قول 0 تنها نقل قول، و برای همه حرف می باشد.
فکر می کنم از آن به عنوان یک ثابت است که نشان دهنده آن است که ارزش ASCII.
>> داوین: بله.
OK، بنابراین اولین بار از طریق، به طوری که با 76-- تا اولین بار از طریق،
این فقط شخصیت است 7 منهای شخصیت 0،
و کسانی که هفت integers-- خوب، آن
هفت فضای به دور از هر دیگر در نمودار ASCII و یا هر چیز دیگری.
به طوری که به بازگشت اعضای هیات 7.
بنابراین در حال حاضر، مجموع برابر با 7.
>> OK، خوب، اجازه دهید پرش به این حلقه دوباره.
OK، در حال حاضر آن را به جمع 10 بار است.
بنابراین شما به طور موثر هستید حرکت 7 به سمت چپ.
آیا این را حس؟
شما به طور موثر هستید حرکت آن به سمت چپ.
>> و سپس شما این add-- در حال رفتن به 6 منهای 0.
که 6.
پس از آن خواهد بود 70 به علاوه 6.
76، که شماره شما است.
بنابراین صرف نظر از آنچه تعداد من به شما داد، آن را به آرامی فقط
رفتن به انتقال مقادیر بزرگتر به سمت چپ، 1 عامل از 10
هر بار در حلقه for، و سپس در صورت لزوم اضافه کنید.
>> در پشت؟
دانشجو: ما مجبور به انجام هر بررسی در این برنامه؟
>> راب: بنابراین تا آنجا که به چک کردن می رود برای این برنامه،
ما از شما می بسیار بگو چیزی که شما نیاز به چک.
اگر ما به شما بگویم که هر چیزی، پس از آن به طور کلی
فرض کنیم شما را برای بررسی بیشتر چیزهایی.
شما ممکن است مانند، فقط به امن، شما احتمالا باید بررسی کنید با سلام، بازدید کنندگان تهی است؟
سپس من هیچ نظری ندارم آنچه به بازگشت.
اما ما به شما خواهد گفت این نوع از چیزی.
0، من نمی دانم.
>> داوین و چرا شما می خواهید به مجددا اگر S برابر پوچ؟
دانشجو: [نامفهوم].
داوین: از آنجا که از ستاره کاراکتر.
این یک اشاره گر است.
بنابراین کاملا قابل قبول است اعلامیه، من می توانم بگویم، OK،
بازدید کنندگان برابر تهی، به دلیل آن می تواند یک اشاره گر به تهی.
بنابراین هر زمان که شما اشاره گر در مسیر خود را در مثل این،
شما احتمالا باید تیک بزنید.
چرا که اگر شما بررسی نمی آن، و سپس بعد از آن شما را به خود را به حلقه،
و شما doing-- لیز خوردن پایین.
لیز خوردن پایین.
>> راب: با عرض پوزش، این آن است.
>> داوین: و به این ترتیب، مانند، اگر آن تهی است، و سپس شما
انجام این کار، چه خطا می خواهید برای به دست آوردن؟
دانشجو: شما قصد دریافت گسل مجموعه.
داوین: شما در حال رفتن به راه گسل، درست است، چون تو
تلاش برای شاخص به تهی.
بنابراین شما به سعی کنید به شاخص در حافظه که متعلق به شما نیست.
پس این، اگر این تهی است، و شما این کار، شما چرخه.
>> راب: من هم فکر می کنم در آزمون که در آن ما این سوال پرسیده می شود، ما به شما بگویم
که شما فقط می توانید فرض آن یک عدد مثبت است.
از آنجا atoi همچنین انتظار می رود که مسئولیت رسیدگی به اعداد منفی،
بنابراین شما می توانید به حالت خاصی داشته باشد.
با سلام، اولین شخصیت است یک خط تیره، که در این صورت، OK،
در حال حاضر آن را به یک عدد صحیح منفی است.
ما به شما این چیزها بگویید.
ما شما را به آنچه که شما نیاز دارید که مسئولیت رسیدگی به.
داوین: بله.
بنابراین من مطمئن هستم که برخی از مردم ممکن have-- هستم اگر شما آغاز شده به دنبال در امتحانات قدیمی،
شما را دیده ام sterln.
که یکی از محبوب است.
و من فکر می کنم در sterln، شما را به حال انجام این کار را بررسی کنید و تهی، بازگشت
0 و یا چیزی شبیه به آن.
دوست دارید، شما تا به حال برای null به.
و اگر شما این کار را نکرد، که اشاره کردن در مسابقه بود.
پس به هر حال، آیا همه احساس OK با atoi؟
آیا کسی می خواهم به بیش از قطعات دوباره؟
راب: اوه بله، من فکر می کنم ما نیز به شما بگویم شما
می تواند که همه چیز is-- که فرض آنها در واقع وارد کردن شماره،
که شما لازم نیست که به نگرانی در مورد، مانند، نامه ها که در رشته، بنابراین.
داوین: آره.
بله؟
دانشجو: آیا می توانید بروید بیش از یک بار دیگر هنگامی که
شما با استفاده از نقل قول های دو جداره و تک نقل قول؟
>> داوین: مطمئنا، بنابراین نقل از دو برابر، بسیار به سادگی، است به نقل از دو رشته می باشد.
بنابراین اگر شما دو برابر اعلان هر چیزی که یک رشته است.
بنابراین، مانند، اگر من این حال بیش از 0 در اینجا، و من این را انجام داد، که یک رشته است.
که دیگر یک شخصیت.
بنابراین من می تواند این مقدار را در ASCII من پیدا کند نمودار، زیرا این رشته، آره.
>> OK، هر گونه سؤال دیگر؟
بله؟
>> دانشجو: پس شما ام در حال حاضر این پاسخ،
اما مانند، هنگامی که ما در واقع هستید نوشتن این در مسابقه،
آیا شما می خواهید ما را به نوشتن با کوفتگی زخم صفر [نامفهوم]؟
داوین: شماره
سوال باید شما بود قرار دادن یک علامت ممیز از طریق صفر
نشان می دهد اگر آنها صفر هستید؟
نه، ما آن را کشف کردن.
بله، به لطف، آنها خوب است.
OK، هر چیز دیگری؟
آیا کسی می خواهید to-- بنابراین من فکر می کنم ما کمی در طول زمان اجرا شود.
آیا شما می خواهید برای دیدن یک دیگر، و یا؟
دانشجو: RandomInt.
>> داوین: RandomInt، OK، دقیقا.
بنابراین اجازه دهید کار را انجام RandomInt.
من آن را در اینجا انجام دهید.
بنابراین RandomInt است که در واقع بسیار ساده تر.
من فکر می کنم atoi است که احتمالا یکی از سخت ترین که ما در سال های گذشته خواسته ایم.
دانشجو: [نامفهوم].
>> داوین: چه؟
راب: من از دیدن اگر آن را به نوع از مشاهده از اینجا.
داوین: آیا آن؟
راب: من فکر نمی کنم آن را going-- من فکر می کنم آن را به اجرا کردن به سمت راست.
داوین: OK، بنابراین من این کار را انجام.
و سپس شما فقط آن را بر روی صفحه نمایش.
>> راب: خوب.
>> داوین: شما می خواهید به کاتب من؟
>> راب: آره.
>> داوین: خوب.
OK، می توانید این را پاک کنم؟
>> دانشجو: آره.
>> داوین: که خیلی سخت است.
(آواز خواندن) شما در حال انجام آنچه شما انجام می دهند.
و انجام آنچه شما انجام نشده است.
همه راست.
>> OK، اگر من به درستی به یاد داشته باشید، در مسابقه RandomInt مانند بود،
OK، من قصد دارم به شما دو را اعداد، مثل یک و ب.
و من می خواهم شما را به من بدهد RandomInt بین آن اعداد.
بنابراین RandomInt است که به دو numbers--
بنابراین RandomInt-- و آن را رفتن به بازگشت یک int.
>> پس چه مقدار بازگشتی است؟
من فقط به شما گفته.
متوسط، درست است؟
مانند این، و سپس آن را رفتن به دو وقفه.
پس از آن رفتن را به اعضای هیات و int B، مانند آن.
پس چه RandomInt است رفتن به انجام است آن را
برای بازگشت برخی از ارزش های تصادفی در بین این دو مقدار.
پس از آن خواهد بود بیشتر از، کمتر از ب.
بنابراین من فکر می کنم شما احتمالا می توانیم فرض کنیم که است کوچکتر از دو مقدار.
بنابراین اگر ما در حال برخورد با اتفاقی، چه تابع
ما دیده می شود که به ما می دهد چیزهای تصادفی؟
دانشجو: Drand.
داوین: Drand، دقیقا.
بنابراین شما به احتمالا مایل به استفاده از drand شما.
بنابراین شما می توانید می گویند اعضای هیات تصادفی، و ما فقط می گویند آن برابر با 0 در حال حاضر.
و آنها ما قصد داریم به می گویند، OK، برابر تصادفی drand 48.
و چه بازگشت؟
چه این تابع به شما بدهد؟
>> دانشجو: بین 0 و 1.
>> داوین: آره، بین 0 و 1.
بنابراین آن را به be--
>> راب: و این is-- من فکر می کنم ما را به شما بگویم این.
دوست دارید، شما می توانید 48 استفاده drand.
شما می توانید این امتحان گذشته بررسی کنید.
اما ما احتمالا می خواهم به شما می گویند می توانید استفاده کنید drand 48، که
شناور بین 0 و 1 را برمی گرداند.
>> داوین: بله، بله، من هستم کاملا مطمئن در آزمون
آن را به شما می گوید احتمالا مایل به استفاده از drand، آره.
بنابراین آن را به بازگشت برخی از ارزش بین 0 و 1.
و پس از آن چیزی است که شما می رفتن به خواهید کاری انجام دهید؟
خب، شما می خواهید به ضرب by-- صبر کنید، من فکر می کنم آن را مانند این است، متاسفم.
من فقط این کار را انجام.
نمی دانم.
>> بنابراین B ​​منهای یک.
پس چرا ب منهای یک؟
بنابراین اجازه دهید می گویند drand به شما می دهد به عقب OK int--، من فقط انجام بقیه،
بنابراین به علاوه یک.
پس چه does-- Y B منهای یک است.
بنابراین اجازه دهید می گویند که drand به شما می دهد به عقب حداکثر مقدار آن می تواند احتمالا به
به شما بدهد.
چه خبر است که برای رفتن به؟
دانشجو: 1.
>> داوین: 1، درست است؟
بنابراین اگر این است 1، و شما ضرب آن را با B منهای یک،
خب، این فقط تفاوت بین منهای A.
و اگر شما پس از آن اضافه کنید که به عقب بر روی، که چیزی است؟
این اساسا ب.
آیا این را حس؟
>> دانشجو: بله.
>> داوین: بنابراین اگر این حداکثر است ارزش آن احتمالا می تواند باشد،
آن را به 1.
و پس از آن این است که فقط تفاوت بین این دو.
اضافه کردن در، پس این رفتن به بازگشت تصادفی.
و در مورد گوشه که drand به شما می دهد به عقب 1،
تصادفی فقط به طور موثر ب خواهد شد.
اما که حداکثر می توان آن را دارد.
بنابراین اگر آن را به کمتر از که، پس بیایید می گویند که آن را مانند 0.9،
پس 0.9 بار ب منهای در حال رفتن به کمتر
از تفاوت بین B منهای یک.
>> و پس از آن اگر شما اضافه کردن که به یک، پس از آن که ارزش است
رفتن به بیشتر از یک، به دلیل شما با اضافه کردن چیزی بر روی آن،
اما آن را به کمتر از B.
بنابراین شما در حال رفتن به گرفتن تصادفی تعداد، چرا که شما خواستار drand.
و رند، که عدد تصادفی است رفتن به جایی در میان
و ب.
آیا این را حس؟
>> راب: فقط به آن را در تعداد بتن، بنابراین
اجازه دهید بگویم که ما می خواهیم به انتخاب عدد تصادفی بین 7 و 10.
بنابراین B ​​منهای یک محدوده ما است.
بنابراین طیف وسیعی از سه وجود دارد تعداد ما می خواهیم را انتخاب کنید.
و سپس ضرب که بین 0 و 1 1،
در صورتی که پس از آن به ما می دهد some-- اجازه دهید بگویم که به ما می دهد 1.5.
>> سپس 1.5، ما می خواهم برای رفتن از 7 تا 10.
پس 1.5 به همراه 7 ما به ارمغان می آورد بازگشت به ما 7 تا 10 محدوده.
و سپس ما آن را ذخیره سازی داخل یک عدد صحیح است، بنابراین کوتاه کردن 8.
و پس از آن ما فقط بازگشت است.
بنابراین B ​​منهای یک محدوده ما است.
آن تا به شیفت اعداد که ما در آن محدوده می خواهید.
بنابراین بین 7 و 10، و پس از آن ما می تواند بازگشت چه ما تا پایان با.
>> داوین: آره، خوب.
>> راب: با تشکر از شما.
>> داوین: آره، چه خبر؟
>> دانشجو: آیا ما آن را اجرا کنید تا از هر نوع خطا زمانی که ASCII we're-- اگر drand است
بازگشت شناور [نامفهوم].
>> راب: بنابراین درست مانند راب گفت، به دلیل تصادفی است بین المللی نیست،
بنابراین drand خواهد شد شناور.
بنابراین و سپس آن را تکثیر کرد.
و شما ممکن است برخی از دریافت نوع اعداد شناور.
و سپس آن را برای کوتاه کردن.
>> دانشجو: OK.
داوین: آره.
راب: و اگر کامپایلر بودند برای هشدار دادن به شما در مورد، مانند، از دست دادن دقت،
فقط پرتاب int در وجود دارد، و سپس آن را خوب است.
داوین: بله؟
>> دانشجو: آن را داشته باشد همان احتمال گرفتن،
مانند، B و یا یک [نامفهوم]؟
>> راب: بنابراین من در واقع is-- wondering-- RandomInt قرار
به تعدادی از به کمتر از ب؟
مانند، اگر آن را بین 7 و در 10، چه فرصت هستند؟
7، 8، 9 و یا 7، 8، 9، 10؟
داوین: من را فراموش کرده ام.
در set-- مشکل
>> راب: من فکر می کنم 7، 8، 9.
>> داوین: این به طور خاص می گوید: یکی از فراگیر و یکی از منحصر به فرد.
>> راب: آره.
>> داوین: اما من don't-- من not-- هستم
>> راب: بنابراین من فکر می کنم این است نمی شامل، که در این صورت،
یک مساوی وجود دارد احتمال 7، 8، و 9.
هیچ احتمال 10 وجود دارد.
داوین: بله؟
دانشجو: من یک سوال.
ما می خواهیم به تعریف یک تابع را برمی گرداند یک مقدار نیست، اما یک آرایه.
سپس چه خواهد بود نحو پس از بازگشت؟
>> داوین: OK، تا بعد شما would-- پس از بازگشت؟
بنابراین اجازه دهید به شما می گویند اعلام کرده بود یک آرایه در جایی وجود دارد.
سپس شما فقط می بازگشت نام آرایه.
>> دانشجو: OK، از شما سپاسگزارم.
پس از آن فقط با a-- بازگشت
داوین: آه صبر کنید، خیلی متاسفم.
سوال این بود که چگونه آیا شما یک آرایه را برگرداند.
>> راب: هر چند که نمی توانست توان یک آرایه را اعلام کرد
در پشته و یا چیزی شبیه به آن.
آن را مجبور به چیزی malloced، زیرا malloc
این است که چگونه شما را در سراسر دریافت تخصیص حافظه به صورت خودکار.
>> داوین: بله.
راب: چگونه شما در اطراف دامنه محلی دریافت کنید.
>> داوین: اما شما می توانید فقط بازگشت name-- آن
>> دانشجو: [نامفهوم] آن را نمی ارزش، به عنوان مثال، دو عدد، به طوری که
[نامفهوم].
>> داوین: شما نمی توانید به چندین شماره گشت.
شما نمی توانید، مانند، return--
>> دانشجو: من در مورد بازگشت صحبت آرایه و یا چیزی شبیه به آن.
>> داوین: آره، بنابراین سوال این است که می تواند چندین مقدار I بازگشت.
شما نمی توانید به چندین مقدار را برگرداند.
شما نمی توانید، مانند، بازگشت پس از آن بازگشت B و یا چیزی شبیه به آن.
از آنجا که پس از بازگشت، شما بازگشت از تابع.
و سپس تابع انجام شده است، و مانند راب گفت، در پشته است.
>> پس همه که حافظه فقط می شود را به کامپیوتر بازگشت.
همه چیز فراموش می شود، اساسا.
بنابراین اگر شما می خواهید به بازگشت چند ارزش ها، شما را مجبور به بازگشت یک آرایه،
و راه را به شما انجام این کار mallocing است.
و سپس شما می توانید مانند X که بازگشت.
در واقع، شما فقط به نام بازگشت.
و هنگامی که شما بازگشت چیزی شبیه به این، شما
در واقع بازگشت ارزش نیست.
>> بنابراین اجازه دهید به شما می گویند ذخیره شده ارزش در یک آرایه.
شما در واقع نیست بازگشت آن ارزش.
مانند، اگر من یک int بازگشت، من واقعا از بازگشت نسخه از ارزش ها.
اما اگر من به بازگشت چیزی شبیه به این،
من از بازگشت یک مرجع به کسانی که ارزش ها.
بنابراین من از بازگشت، در واقع، آدرس حافظه به ارزش.
آیا این را حس؟
دانشجو: بله.
داوین: خوب.
بله؟
>> دانشجو: زمانی که شما با استفاده از drand اینجا،
آیا شما برای قرار دادن srand قبل از آن؟
>> داوین: نه، نه، من اینطور فکر نمی کنم.
>> راب: آره، بنابراین شما باید برای گفتن هر چیزی در مورد srand؟
به طور پیش فرض از شما هرگز گفت srand در همه این است که فقط srand از تهی.
بنابراین در کار خواهد کرد خود را drand.
و آن را به طور خودکار با بذر زمان جاری، همان چیزی است که آن را استفاده می کند.
داوین: بله؟
دانشجو: آیا شما [نامفهوم] با شماره؟
داوین: بله، شما می توانید.
دانشجو: بنابراین شما می تواند می گویند، مانند، 4 بار 2.
چیزی است، نمی توان فرض سپس یک int چهار بایت است.
only--
>> داوین: منظور من، برای مسابقه شما می توانید.
[می خندد]
>> راب: میلی متر، هیچ.
داوین: بله، بله شما می توانید.
اگر آنها به شما بپرسید که چگونه بزرگ بین المللی است، شما نمی توانید، مانند، چهار یا هشت.
راب: آه، پس اگر سوال این است که به طور خاص،
مانند، اگر آن را یک مشکل برنامه نویسی، شما باید اندازه بین المللی می گویند.
و یا اگر آن را به یک جدول است، آن را می گوید که چگونه بسیاری از بایت،
شما باید در اندازه وقفه پر نیست.
>> دانش آموزان: [می خندد]
>> داوین: درست است، بنابراین به همین دلیل است اندازه اعضای هیات مهم در اینجا؟
بنابراین مانند، اگر ما قصد داریم به 32 بیتی پردازنده و یا چیزی شبیه به آن،
سپس آن را به چهار بایت.
اما در برخی از نسخه های جدیدتر مسائل، می تواند آن را چه؟
این می تواند هشت، درست است؟
بنابراین اگر شما فقط this-- کد سخت چهار، پس از آن در برخی از ماشین آلات، آن کار خواهد کرد.
برخی از ماشین آلات، آن کار نخواهد کرد.
اما اگر در مسابقه ما مانند یک int چقدر بزرگ است؟
قرار دادن چهار.
راب: درست است.
داوین: آره؟
دانشجو: پس چون ما در حال اعلام [نامفهوم] در داخل یک تابع،
باید ما را در داخل آن تابع 3؟
و یا می توانید آن را استفاده می کنیم خارج؟
داوین: شما می توانید از آن استفاده کنید خارج از آن تابع.
بنابراین او را به صورت رایگان درخواست.
>> دانشجو: از دست دادن آهنگ که در آن [نامفهوم].
>> راب: اوه، آزاد کند happen-- نمی که بخشی از سحر و جادو از malloc است
این است که شما نمی محدود به دامنه های محلی.
شما باید کنترل کامل بر چه مدت متغیرهای خود را زندگی می کنند.
بنابراین ما malloc تماس بگیرید در اینجا، آن ممکن است یک تابع کاملا مجزا.
این ممکن است 10 ساعت بعد که ما در نهایت با تلفن رایگان.
>> داوین: بنابراین برای مثال، مانند، یک زن و شوهر هفته دیگر، هنگامی که شما در نهایت
انجام کسیکه لغت را هجی فرهنگ لغت خود psets، شما در حال رفتن
به برخی از تابع که تن از گره ایجاد می کند.
بنابراین شما mallocing تن در این تابع گره.
و سپس بعد از آن در عملکرد مجزا، شما
رفتن به خواهید برای آزادی تمام کسانی که گره.
بنابراین شما به معنای واقعی کلمه می تواند فقط به تصویب آزاد یک اشاره گر، به طوری که یک آدرس حافظه
به آنچه که شما malloced.
و این خوب خواهد شد.
شما لازم نیست که برای آزادی، مانند، در همان تابع.
بله؟
>> دانشجو: پس malloc متغیر [نامفهوم] خارج؟
این است که آنچه شما می گویید؟
داوین: صبر کنید، می گویند که؟
متأسفم.
>> دانشجو: اگر یک متغیر malloc می تواند به صورت رایگان در هر نقطه از کد،
پس از آن می تواند به آنها دسترسی در هر نقطه از کد؟
آیا می توانید آنها را محلی نگه دارید؟
>> داوین: آه، او پرسید: مانند، متغیر، like--
>> راب: پس شما هنوز هم نیاز به نوعی مرجع
برای جلوگیری از malloc از حافظه است.
بنابراین در اینجا، ما در حال بازگشت به X.
دانشجو: اوه.
راب: اگر ما نمی گرداند X در اینجا، و این فقط جای خالی،
پس هیچ دسترسی به اشاره گر که malloced شد،
و آن را از حافظه بیرون درز.
>> دانشجو: OK.
>> داوین: پس چون، اجازه دهید به شما می گویند این، مانند، حق در اینجا.
راب: نه
داوین: در تابع اصلی من، من می توانم فقط به این X و، مانند، OK،
در این تابع، من این را انجام داد.
>> راب: درست است.
>> داوین: من می خواهم به تماس X در، مانند، اصلی و یا چیزی شبیه به آن.
شما نمی توانید به انجام این کار.
شما در حال رفتن برای بازگشت به چیزی.
اما آنچه می خواهید به بازگشت؟
شما در حال رفتن برای بازگشت به یک آدرس حافظه.
و از آنجایی که حافظه شما بازگشت آدرس، است که می تواند در جای دیگر قابل دسترسی است.
هر گونه سوال بیشتر؟
بله؟
>> دانشجو: آیا عملکرد بالا بودن چک برای [نامفهوم]؟
>> داوین: چرا من نیاز به انجام این کار؟
دانشجو: [نامفهوم].
داوین: از آنجا که شما هستید هر چیزی mallocing نیست.
پس از آن به not-- آره، آن را رشته ها را دوست ندارد.
این یک اشاره گر به جایی است.
این فقط ارزش هستند.
دانشجو: OK.
داوین: آره.
هر چیز دیگری؟
راب: بله؟
دانشجو: اما وقتی که شما [نامفهوم]؟
>> راب: بنابراین به منظور آزاد حافظه، ما در اینجا می گویند.
بنابراین X اشاره گر ما به است بلوک از حافظه.
ما رایگان است که اشاره گر.
و ما نه لزوما آن را در اینجا انجام دهید.
ما می توانید آن را در هر نقطه انجام دهد.
اما شما فقط تماس بگیرید رایگان در چیزی است که بازده malloc.
بنابراین malloc، در اینجا، بازگشت آنچه که در X ذخیره می شود.
بنابراین ما می توانیم به صورت رایگان در X تماس بگیرید.
هر گونه سوال و زمان آخرین؟
>> داوین: هر گونه سؤال و زمان آخرین؟
آره؟
>> دانشجو: با عرض پوزش، می تواند شما را دوباره توضیح دهد به همین دلیل شما می وجود دارد آزاد؟
چرا [نامفهوم]؟
>> داوین: برای اینجا؟
>> دانشجو: آره، مثل درست بعد.
داوین: احتمالا شما نمی خواهم در اینجا به صورت رایگان.
راب: شما احتمالا نیست.
داوین: آره، که این امر هیچ چیز را انجام دهد.
این می، مانند، ایجاد حافظه، انجام مسائل به آن،
و سپس بلافاصله را فراموش کرده ام در مورد آن، آره.
>> راب: اما ما ممکن است، مانند، در اینجا به چند دلیل.
ما ممکن است ستاره بین المللی می گویند Y برابر با آرایه بازگشت.
آیا برخی از مسائل با Y، شاید چاپ مطالب.
و پس از آن، در نهایت، ما در حال انجام می شود.
ما می توانیم Y را آزاد کند.
دانشجو: [نامفهوم].
داوین: باید به پایین حرکت؟
با تشکر.
راب: خوب.
>> داوین: OK، که این.
راب: خوب، خوب است.
موفق باشید.
>> داوین: اگر شما سؤالی دارید، به ما ایمیل.
موفق باشید.