[موسیقی] SPEAKER 1: سلام، همه. خوش آمدید به بخش. روز دوست داشتنی out-- همین دلیل است که، من هستم مطمئن هستند، تنها چهار نفر از شما در اینجا وجود دارد و نه بسته معمول ما. من بیمار است در این آخر هفته. بنابراین من با ستارگان انفجاری و برای شما بچه ها را نداشته باشند. و من ممکن است شروع به سرفه وحشتناکی در سراسر این. پس فقط با من داشته باشد. من قصد دارم که واقعا سعی و از طریق این برای اولین بار، هر چند، قبل از من یک حمله سرفه. اما فقط به راحتی بر روی من است کمی bit-- که همه من بپرسید. بنابراین دستور کار ما برای today-- تنها reminder-- مسابقه خود را در هفته آینده است. من این هفته گذشته به شما گفته تا آن به نظر شما خاموش گارد گرفتن نیست. بنابراین، من به یاد تو دوباره. هفته آینده مسابقه خود را. به این منظور، هفته آینده بخش بسیار بیشتر خواهد بود of-- من سعی می کنم و کار در برخی از بررسی خواهیم کرد. بنابراین اگر شما بچه ها می تواند به من کمک کند با ارسال من چیزهایی که شما راحت هستید با، که شما نگران هستید، موضوعاتی که شما می خواهم برای دوست من برای پوشش، که می شود، بزرگ است. بنابراین من می توانید سعی کنید و کار آنها به بخش ما در هفته آینده یا شما مواد اضافی و یا آمادگی ارسال که شما ممکن است در جای دیگر. آره! مردم بیشتر می آیند! من فکر کردم، آیا من که بد گذشته انجام هفته، که هیچ کس می خواهد به بازگشت؟ من می ترسم. بنابراین سه چیز دیگر که ما در حال رفتن به رفتن تغییر مسیر هستند، فایل I / O، و سپس اشاره گر و حافظه پویا. من مطمئن هستم همه شما را در مورد فوق العاده هیجان زده هستم pointers-- موضوع مورد علاقه همه، بسیار ساده به درک. من مطمئن هستم که شما بچه ها را تمام کردم که حق با منه؟ چیزهای اول، redirection-- این است که اساسا فقط یک راه برای کنترل چگونگی ورودی همه چیز به برنامه شما، چگونه شما همه چیز را از خروجی برنامه شما. راه های اصلی که شما بچه ها با آن تعامل شده است فقط از طریق استاندارد با صفحه نمایش چاپ خود را در اینجا. اما راه هایی برای وجود دارد pipe-- که ما در اینجا مشاهده کنید یکی از نوع words-- ما لوله که اطلاعات یا این که اطلاعات را به یک فایل را از یک فایل. این تنها روش های متفاوتی است گرفتن همه چیز به برنامه شما و از برنامه های خود را، به جای فقط آنها را به چاپ این صفحه یا وارد چیز از خط فرمان. بنابراین یکی از اولین کمی است بیشتر از هشتک. بنابراین آن را فقط output-- چاپ خروجی به یک فایل به جای صفحه نمایش خود را. بنابراین اگر شما چیزی است که چاپ شده بود "سلام جهان!" به روی صفحه نمایش، اگر شما آن را به جای قرار دادن به output.text، که این فایل با نام output.text ایجاد می کند. و هنگامی که شما آن را باز کنید، آن را می گویند: "سلام جهان!" در آن وجود دارد. این می تواند فوق العاده مفید اگر شما یک تن از اشتباهات در واقع، همانطور که ما در این یکی را ببینید. اگر شما دو هشتک انجام شود، آن را چاپ پیام های خطا. بنابراین اگر شما با داشتن مشکل با تدوین، آن را تا به بسیاری از اشتباهات و شما گرفتن در تلاش گرفتار از طریق حرکت در خط فرمان شما از طریق همه آنها را، شما می توانید فقط آنها را در یک فایل چاپ، باز کردن فایل است که به طوری که شما می توانید از طریق آنها را آسان تر حرکت کنید. من در واقع استفاده می شود که بسیاری زمانی که من در اشکال زدایی 181 psets من برای یادگیری ماشین. بنابراین می توان آن را فوق العاده مفید بعد از آن. این هم مفید باشد اگر شما یک برنامه که شاید در حال تولید یک کتابخانه و یا ایجاد برخی از مجموعه ای از رشته، و شما باید قادر به دیدن که آن را به درستی آنها را تولید. این راه را برای انجام این کار است. بنابراین اگر شما آنها را چاپ به یک فایل، شما می توانید به آسانی آنها را بررسی، درست است؟ در مقابل تلاش برای حرکت از طریق خط فرمان شما. و پس از آن یک چیز را به یاد داشته باشید این است که تنها با بزرگتر از هشتک، اگر شما در حال نوشتن را در یک فایل که در حال حاضر exists-- بنابراین اگر ما مثل زد این اولین حال، ما آن را به output.text، و پس از آن ما برنامه دوم که این به عنوان برنامه دو چاپ و انجام بیش از به output.text، آن را بازنویسی that-- تا بازنویسی آنچه که تا کنون در بود که فایل برای شروع با. بنابراین اگر شما می خواهید برای اضافه در یک فایل، به عنوان ما در اینجا ببینید، شما فقط دو بیشتر از علائم. و آن را به آن اضافه نماییم. آن را بنویسید. بنابراین اگر شما نیاز به اجرای چند برنامه ها و نوع نگه داشتن آهنگ از چیزی است که همه از آنها بازگشت به شما در یک فایل، که یک راه برای انجام آن است. اگر شما اهمیتی نمی چه چیزی در فایل شما و آن را اجازه رونویسی شود، شما فقط می توانید با استفاده از یک تک بیشتر از. آیا این را حس برای همه؟ رسید مانند نقطه بریده بریده سلام بیشتر از خروجی متن، نقطه، مانند دو بار، آن را فقط تنها در خروجی نشان می دهد نقطه متن time-- دوم SPEAKER 1: درست است. پس از آن خواهد اساسا فقط به طور کامل بازنویسی آنچه که وجود دارد برای شروع با. اگر این فایل را در اینجا، output.text در حال حاضر وجود دارد، در واقع هر آنچه که شما تماس بگیرید که دوباره با بیشتر تک از شما فقط می توانید از آن فکر می کنم به عنوان مثل آن را جایگزین فایل. مانند زمانی که می خواهید صرفه جویی در ورد سند و شما را نجات دهد به عنوان، و شما در حفظ و به همین نام، و آن را کاملا it-- رونویسی این همان چیزی است که. هر کسی هر گونه سوال در مورد فقط خروجی به یک فایل؟ بسیار جذاب است. بنابراین بدیهی است، اگر شما به عقب فلش جهت، می توان آن را انجام ورودی. بنابراین، هنگامی که شما بچه ها به حال مثل سزار یا VISIONEER و شما را به چیزی ورودی به حال، شما استدلال خط فرمان به حال که در واقع ورودی آن است. این راه دیگری برای انجام این کار است. بنابراین به جای انتظار برای خط فرمان، مانند وقتی که شما برای خواسته خود را ارسال در سزار یا VISIONEER، اگر شما یک فایل متنی به حال که پیام خود را به حال، شما فقط می تواند از آن که به آن نوع. بنابراین اگر این نقطه مانند بود بریده بریده سزار 3 کمتر از فلش متن ورودی، که پیام خود را، که فقط خوب را. هنگامی که برنامه شما در واقع سزار برای ورودی خواسته از کاربر، در حال حاضر آن را به خاطر دارند شما در این فایل تایپ کرده اید. که یک راه دیگر. فقط یک معکوس output-- فقط ورودی برای داده های خود را. و پس از آن یکی از آخرین لوله است. بنابراین خیلی سرد این یکی را. از آنجا که آن را به شما اجازه می دهد تا به گرفتن خروجی از یک برنامه و آن را به عنوان قرار داده ورودی به یک برنامه دیگر. من نمی دانم که اگر هر کدام از شما با کشف بازی که ممکن است CS50 شما داده می شود، اما این امر می اجازه می دهد تا شما را به برخی از نمونه فایل، آن را به رمزگذاری خود را، و سپس از آنجا تایپ که به رمزگشایی شما مطمئن شوید که معلوم شد همان. پس از آن نوع مانند سه راه حلقه. برو برای آن. رسید اگر یک برنامه دارای ورودی های متعدد، یک راه برای آن که ورودی گفتن وجود دارد برای استفاده از فایل متنی و یا خروجی برای؟ SPEAKER 1: این ورودی های متعدد. هر چه فایل input-- خود را هنگامی که آن را درخواست های ورودی است که اولین بار، آن را رفتن به فرض، من فکر می کنم، آن را رفتن به لوله در کل فایل. بنابراین اگر شما ورودی های متعدد، شما رفتن به چند فایل در لوله کشی می شود. بنابراین اگر شما برای پیغام های درخواست سه بار در کد خود را، شما به قرار دادن شود در سه فایل مختلف. و آن را دیوانه می شود. و شما باید به ندارد نگران است که در حال حاضر. اما این ایده است. پس آره، لوله خروجی فقط از یک است برنامه با استفاده از ورودی را به طرف دیگر. هر کس خوب وجود دارد؟ سرد. OK. شما احتمالا نمی خواهد که برای انجام این کار بیش از حد با آن است. اما شما باید درک روش شما می توانید از این استفاده کنید. و برخی از موارد وجود دارد که شما ممکن است بخواهید از آن استفاده کنید. بنابراین فایل I / O-- من می دانم آنچه را که شما saying-- ما به خواندن از استفاده و نوشتن به صفحه های ما وجود دارد، که در استاندارد و استاندارد است. و این چیزی است که شما بچه ها شده است انجام از آغاز کلاس در اینجا. اما شما همچنین می توانید به خواندن و نوشتن فایل ها، است که تمام فایل I / O-- تا فایل ورودی، خروجی همه از آن می ایستد است. بنابراین این بدان معنی است که شما می توانید اطلاعات خود را در حال حاضر ذخیره کنید. هنگامی که شما فقط آن را چاپ به صفحه نمایش، آن را اساسا از بین رفته اند، درست است؟ به محض این که شما را "خوش آمدید جهان "و اجرای" سلام جهان " را چاپ "سلام جهان" به روی صفحه نمایش. اما شما نمی توانید واقعا هر کاری با آن وجود دارد. اگر شما در یک متن ذخیره فایل، و سپس به طور ناگهانی شما باید این داده ها است که به شما اجازه می برای دستکاری و یا آن را به یک فایل، و یا آن را به یک برنامه بعد. یکی از دلایل چرا ما این است که فقط به عنوان یک راه برای ذخیره داده ها برای استفاده های بعدی. من یک زن و شوهر از مراحل را در اینجا تنها راه رفتن را از طریق استاندارد I / O. در گام اول، شما نیاز به ایجاد یک مرجع به فایل با تمام کلاه پرونده ستاره. به طوری که یک اشاره گر به یک فایل ایجاد می کند. پس شما می خواهید به آن را باز کنید. و به شما می گویند، به معنای واقعی کلمه، فایل فقط برابر با fopen. و این است که برای بازگشت به اشاره گر به فایل شما فقط باز کرد. من یک زن و شوهر از شما را دیدم بچه ها در ساعات اداری. اما یکی از چیزهایی که اشاره گر remember-- است می تواند آدرس یا null، درست است؟ اگر ما تا به حال یک مورد که در آن چیزی می تواند بازگشت تهی، چه چیزی ما را مجبور به انجام قبل از ما تا کنون از آن استفاده کنید؟ ما باید اگر به بررسی آن را پوچ یا نه، درست است؟ از آنجا که برخی از شما ممکن است داشته اند موضوع که در آن هر شی در برک آوت بازگردانده شد پوچ بود. شما سعی به انجام برخی از عملکرد بر روی آن. و سایت کامپیوتر شما ایراد گرفت. درست است؟ من شرط می بندم که تعدادی از شما ممکن است که موضوع داشتند. بنابراین با fopen، fopen یا خواهد شد بازگشت یک اشاره گر به فایل، یا اگر چیزی را اشتباه می رود، آن را به بازگشت تهی. بنابراین شما همیشه نیاز به بررسی که آن را به بازگشت تهی نیست قبل از تلاش برای انجام هر چیز دیگری. این مثل این است که یک الگوی استاندارد که شما نیاز به رفتن به اینجا. اگر تا به حال یک شانس وجود دارد که چیزی می تواند پوچ بازگشت، چک کنید تا مطمئن شوید که آن را نمی قبل از اینکه شما را ادامه دهید. در غیر این صورت، شما در حال رفتن برای به دست آوردن گسل سایت دوست داشتنی. و هیچ کس را دوست دارد به مقابله با آن. بنابراین همانطور که ما در اینجا مشاهده می کنید، آرگومان اول فقط مسیر فایل است. در صورتی که فایل وجود ندارد، آن را به ایجاد آن فایل. و آن را فقط رفتن به خالی باشد. و سپس آرگومان دوم حالت است که شما می خواهید می باشد. آیا ما می خواهیم از این فایل به عنوان خوانده شده؟ آیا شما می خواهید از آن ارسال؟ آیا شما می خواهید برای اضافه؟ پس در واقع آنچه که من فقط said-- در صورتی که فایل وجود ندارد و شما در حال تلاش برای از به عنوان خوانده شده آن، آن را به پرتاب خطا. اگر پرونده name-- اگر دوست file.text هنوز وجود ندارد و شما می خواهید به ارسال به آن، آن را ایجاد خواهد کرد یک فایل خالی به file.text برای شما به نام. و اگر شما می خواهید برای اضافه، شما باید همین کار را بکند. آیا این را حس؟ اگر شما در حال تلاش برای از به عنوان خوانده شده یک فایل که هنوز وجود ندارد، آن را یک خطا بزنند. در غیر این صورت، آن را به فایل ایجاد را برای شما انجام آنچه شما را به آن را می خواهم. سرد. در حال حاضر ما می توانید از فایل بخوانید. و این فقط نوعی از رفتن از طریق توابع مختلف که ما برای فایل I / O داشته باشند. این اراده در pset این هفته لازم باشد، اگر درست به یاد داشته باشید. بله، آن را کاملا خواهد بود در pset این هفته لازم است. بنابراین fgetc شخصیت بعدی بر می گرداند. fgets فقط یک خط از متن را برمی گرداند. آن را به هر چیزی تا بازگشت یک خط جدید، و آن را خواهد شکست. بنابراین fread بار خوانده شده خاص تعداد بایت ها و مکان آنها را به یک آرایه، که چیزی است که شما ممکن است می خواهید با دوباره size-- ممکن است مفید باشد. چگونه بسیاری از مردم را مشاهده کرده اند تنظیمات pset، با راه؟ OK. [نامفهوم] SPEAKER 1: OK. همه راست. قطعا به عنوان خوانده شده that-- آن pset سرگرم کننده است. شما دریافت می کنید به بهبود حافظه حذف card-- واقعا هیجان انگیز است وقتی کار می کند. اما قطعا، شروع به خواندن که. بیا با من صحبت کنی اگر شما سوالی در مورد آن. OK، بنابراین به عنوان من می گفت، fread آمده است که تعداد معینی از بایت. که برخی از تعداد خودسرانه است است که شما قصد به راه. و پس از آن فقط حرکت fseek به یک موقعیت خاص است. بنابراین شاید شما اهمیتی نمی در مورد 10 بایت بعدی. شما فقط می خواهید به جست و خیز به آینده. شما در مورد آن اهمیتی نمی دهند. شما می خواهید به خواندن شروع در بایت 11. fseek اجازه می دهد تا شما را به انجام این کار. پس از آن اجازه می دهد تا شما را به انتخابی در مورد آنچه که شما در حال خواندن. از آنجا fgetc، fgets و fread خوانده شده از یک محل خاص در فایل. یک راه برای این مورد فکر می کنم این است که اگر این فایل ما است، زمانی که شما برای اولین بار آن را باز کنید، شما باید این موقعیت را در فایل که در آغاز شروع می شود. هر زمان که شما تماس بگیرید fgetc، fgetf، یا fread، آن را از شروع این نشانگر موقعیت. بیایید می گویند شما فقط می خواهم به عنوان خوانده شده این تکه از حافظه بیش از اینجا. شما نه تنها می توانید تماس بگیرید. شما باید به دنبال در اینجا و سپس از آنجا به عنوان خوانده شده و یا به عنوان خوانده شده، می شود، و یا getc، با توجه به آنچه شما می خواهید. بنابراین به دنبال فقط شما اجازه می دهد تا به بخشی از حافظه است پرش کنند. و این تنها روش شما می توانید همه چیز را جست و خیز بدون خواندن آنها به بافر خود را. آیا این را حس برای همه؟ بدیهی است، وجود دارد بسیاری از here-- موازی تغییر مسیر خروجی یا ورودی ما، شما را خوانده و ارسال. بنابراین fputc فقط می نویسد شخصیت ها را به فایل. fputs می نویسد یک خط است. Fprintf چاپ خروجی فرمت شده باشد. بنابراین اگر شما زبانه ها، یا فضا، یا فلان چیز. و سپس می نویسد: برخی از fwrite آرایه ای از بایت را در یک فایل. پس این همان راه است fwrite و fread مشابه هستند fgets opposites--، fputs و سپس fputc و fgetc-- لات ها دیوانه، همه چیز سریع است. فقط نوع این handy-- حفظ شما زمان های مختلف باید که در آن شاید شما فقط می خواهم یکی از شخصیت ها در یک زمان. شاید شما می خواهید یک خط کل. با pset-- فرهنگ لغت خود که در دو psets، به اعتقاد من، ما به شما یک کل را فرهنگ لغت در قالب متن که هر کلمه ای جدا توسط یک خط. بنابراین اگر شما می خواهید به عنوان خوانده شده در یک کلمه در یک زمان، آنچه ممکن است شما با استفاده از اگر شما در حال خواندن و همه آنها در خط جدید از هم جدا، و شما فقط می خواهید یک کلمه در یک زمان؟ رسید Fgets SPEAKER 1: درست است. Fgets-- چرا که برمی گرداند هر در یک خط است. و اگر هر کلمه آن است خط خود، ما می توانیم fgets استفاده کنید. سرد. آیا این را حس، هر کس؟ سرد؟ بله، ما در حال رفتن به رفتن به بخش سرگرم کننده با اشاره گر خیلی زود، که در آن شما را وادار به انجام برخی از ریاضی. و آن را بزرگ خواهد بود. تاریخ و زمان آخرین step-- فایل را ببندید. با بسیاری از چیزهایی که در اینجا، یکی از پارادایم های ما است اگر آن را می توانید بازگشت تهی، پوچ برای تیک بزنید. اگر شما برای باز کردن چیزی، شما بهتر است آن را ببندید. OK، بنابراین شما انجام می شود نه تا زمانی که تو مگر اینکه شما آن را بسته اید. نوع مانند آن را بیش از نه تا زمانی که بانوی چربی آواز می خواند. که مانند بسته شدن پرونده خود. به عنوان آن را می گوید در اینجا، فقط به تکرار، همیشه باز کردن فایل خود را قبل از اینکه شما خواندن و نوشتن به آن. و همیشه آن را ببندید اگر شما آن را باز کرده اید. همه درست است؟ سرد. بنابراین در اینجا یک مثال است. اگر چنین است tiny-- من نمی دانم شما بچه ها می توانند به خوبی می بینیم که. اگر فقط ما می تواند افزایش دهد روشنایی به نحوی. اجازه دهید من در واقع انجام این کار اگر من می توانم. OK، شما بچه ها را واقعا می تواند می بینیم که در همه، می تواند به شما؟ OK، ما قصد داریم برای انجام این کار، پس از آن. [نامفهوم] من فرض این خیلی بهتر است برای دیدن. آیا می توانم هر کسی را ببینید که در آن من موس رفت سوال این است؟ آه، آن چه تلاش is--! OK. در واقع، شما بچه ها باید نوع دارند یک ایده از آنچه انجام این کار است. این کامل نیست. اما من ترجیح می دهم آن را توضیح دهید از صرف زمان بیشتری را در تلاش برای آن را با فرمت مناسب. در واقع، به عنوان شما در اینجا ببینید، ما با باز کردن فایل شروع می شود. و ما از فایل پایگاه داده است که ما باز که می گوید آن را به دانش آموزان ما. و ما در حال رفتن به ارسال آن. پس از دوره، بازگشت تهی. بنابراین ما باید برای null به. و پس از آن اگر آن را نمی تهی، ما را از طریق رفتن. و به عنوان شما می بینید، ما هستیم حلقه از طریق اینجا. دانش آموزان وجود دارد. دانشجویان رشته هش تعریف شده به عنوان سه است. و آنچه ما انجام می دهیم این است که ما می چاپ به فایل، درست است؟ پس چه هستند که ما را به چاپ فایل های ما؟ رسید نمرات که در آرایه هستند؟ SPEAKER 1: آره. نمرات که در هستند array-- دقیقا. بنابراین ما در حال باز کردن این فایل پایگاه داده، که من فرض نوعی است پایگاه داده نمرات. و ما فقط چاپ کردن نمرات هر دانش آموز به آن فایل. سرد؟ خوب است. بسیار جذاب است. OK. بیایید بازگشت to-- رسید من یک سوال سریع داشته باشد. آیا printf را در نه برای حلقه؟ که فقط در اگر حلقه؟ SPEAKER 1: نه، آن را در برای حلقه. من نمی توانم موس من تا اینجا را ببینید خیلی خوب. بنابراین من تلاش به فرمت که به درستی. این براکت باید رفته باشد. در اینجا باید پایین باشد. این است که چه چیزی در شما برای حلقه. وجود دارد. در حال حاضر آن را بسیار. به طوری که چگونه باید به جز be-- برای که براکت گذشته که من را رد کرد. OK. آیا این را حس برای همه؟ OK. ما قصد داریم به حرکت در به چیزی که بعد از then-- که، در واقع، شما در حال رفتن به نیاز به مراجعه به کد. بنابراین من فقط رفتن به کپی که در حال حاضر بیش از. OK. بنابراین من قصد دارم به شما بچه ها این کد نشان می دهد. و من می خواهم شما را امتحان کنید و شکل از آنچه را که قرار است انجام دهد. بنابراین با توجه به that-- را یک دقیقه یا بیشتر. سعی کنید شکل و خارج چه خبر است اینجا. هر گونه ایده ها؟ ما می دانیم که ما باید حداقل دو استدلال در خط فرمان، درست است؟ من فرض که یکی از آنها در حال رفتن به که [نامفهوم] از برنامه های ما است و پس از آن چیز دیگری. چرا که اگر [نامفهوم] کمتر است از دو، ما به آنها داد. درست است؟ و از استفاده، آن را مانند به نظر می رسد آن را به نوعی از فایل. همه ما به آن به توافق برسند؟ بنابراین در حال حاضر، چه حلقه انجام می دهید؟ چه شد که از بین رفتن؟ رسید همه فایل. SPEAKER 1: دقیقا. این رفتن را از طریق تمام فایل های که ما ورودی کرده ام. بنابراین برای هر فایل، آن را باز کردن برخی از رشته وجود دارد. این است که باز کردن فایل. درست است؟ و آن را از آن خواندن. البته، چک کردن اگر آن را تهی. و سپس آن را چاپ. اگر آن را پوچ، آن را فقط به ما گفتن که یک فایل را که وجود دارد نیست. از آنجا که به یاد داشته باشید، با به عنوان خوانده شده فایل ما وجود داشته باشد. درست است؟ با نوشتن و اضافه، شما می توانید دور با آن دریافت کنید. اما با خواندن، فایل ما وجود داشته باشد. و سپس اگر آن وجود داشته باشد، آنچه که ما در اینجا کار می کنید؟ اجازه دهید فقط در اینجا شروع می شود. این چیست do-- این شخصیت برای اولین بار. چه کاری انجام میدهد؟ او می شود یکی از شخصیت ها، درست است؟ پس چه شده است این کار؟ آن را گرفتن شخصیت اول. هر کسی EOF می دانید؟ رسید انتهای فایل؟ SPEAKER 1: پایان file-- دقیقا. بنابراین آن را از طریق رفتن کل فایل، درست است؟ و سپس آن را برای به روز رسانی توسط گرفتن هر شخصیت بعدی. درست است؟ و آنچه را انجام می دهند؟ رسید که قرار دادن in-- SPEAKER 1: Putchar چاپ به محافظ صفحه نمایش خود را. [نامفهوم] شخصیت. و پس از آن زمانی که آن را [نامفهوم] این فایل را ببندید. رسید: آیا [شما لازم نیست؟ چیز دیگری؟ ؟] SPEAKER 1: نه لزوما. منظور من، آن نوع از این ذکر شده است. از آنجا که این باز می گردد، هر چند، تا زمانی به عنوان این که این را متوجه نشدم، شما خوب هستید. منظور من آن را احتمالا خوب تمرین برای انجام دیگر. اما دیگری همیشه لازم به خصوص اگر شما چیزی را مانند یک بازگشت، که بدان معنی است که در این مورد اگر آن جلب آن، برنامه های خود را برای پایان دادن به رفتن و آن را هرگز به این را دریافت کنید. این بیشتر برای این مورد که در آن شما هستید لزوما بازگشت چیزی نیست. چرا که اگر این نبود بازگشت هر چیزی، بدان معنی است که اگر این درست باشد، بقیه این هنوز هم اجرا شود. و در آن صورت، شما نادرست می خواهید. اگر آن را به بازگشت، و پایان برنامه خود را، دیگری است که همه لازم نیست زمان، بسته به چهار چوب. یعقوب، آیا شما سوالی دارید؟ رسید: آره. بنابراین آیا fgetc دریافت کاراکتر بعدی؟ چگونه شخصیت افزایش می دهد؟ SPEAKER 1: آره. بنابراین fgetc می شود شخصیت بعدی. شما می توانید از آن مانند C ++ به یک معنا فکر می کنم. رسید پس چه EOF بود؟ SPEAKER 1: EOF انتهای فایل است. این تنها یک شاخص است که به شما اجازه می دانم که شما در پایان فایل خود هستید. پس این است که برای چاپ استاندارد خود را. و سپس آن را برای بستن فایل هنگامی که آن را انجام می شود. و پس از آن اجازه دهید برای رفتن فایل بعدی، درست است؟ بنابراین به طور کلی، آنچه که این برنامه انجام دهید؟ [نامفهوم] SPEAKER 1: آره. این فقط چاپ همه چیز وجود دارد. بنابراین CAT اگر شما بچه ها که تا کنون مورد استفاده قرار و سپس نام برخی از file-- من نمی دانم که اگر هر کدام از شما تا کنون انجام داده است که در ترمینال خود را. اما اگر شما تا به حال با استفاده از دستور CAT-- C-A-T-- و پس از آن هر فایل شما there-- آن آن چاپ به ترمینال خود را، که می تواند فوق العاده برای برخی از چیزهایی دستی. من آن را به مقدار زیادی استفاده کنید. آیا این را حس برای همه؟ سرد؟ OK، بنابراین وظیفه شما now-- یا با خودتان و یا با مردم در اطراف you-- است که فقط ارسال یک برنامه ساده که فقط ارسال خواهد شد "سلام جهان!" به یک فایل. [نامفهوم] [نامفهوم] SPEAKER 1: من می خواهم، انجام من که هفته گذشته به شدت انجام دهید؟ من فکر نمی کنم بد بود که. من خوشحالم که همه در اینجا هستم. این واقعا باعث می شود من خوشحال است. من یک دختر از لذت های ساده هستم. فقط دوست دارم زمانی که من حضور بخش. بنابراین من فقط گرفتن این آغاز شده برای شما بچه ها به طوری که ما با هم می توانید کد. من دوست ندارم هر کسی قرار دادن در نقطه مگر اینکه شما می خواهید. رسید برای مسابقه، انجام ما باید به نوشتن یک برنامه؟ SPEAKER 1: شما ممکن است به خواسته ارسال برنامه های ساده با دست. آره. رسید مسابقه هفته آینده است، درست است؟ SPEAKER 1: مسابقه چهارشنبه آینده است. این بدان معناست که یک [دوست داشتنی وجود دارد؟ CSE؟] درجه بندی حزب پس از آن که به معنی شما نمره خود را دریافت کنید بازگشت که در چه زمانی night--؟ چه کسی می داند؟ اما از آن خواهد شد که آن شب. همه راست. چگونه ما می خواهیم برای شروع این؟ من به شما یک شروع می شود با این hint-- دهد. رسید شما باید برای باز کردن یک فایل. SPEAKER 1: آره. بنابراین چه چیزی می خواهید به این؟ آیا شما فقط می خواهم به آن "فایل" تماس بگیرید؟ اجازه دهید آن را آسان. بنابراین fopen-- آنچه ما آزمون خروجی خواهد بود؟ تماس با آن "سلام." و چه حالت است؟ چه به این فایل کار می کنیم؟ رسید به عنوان خوانده شده. نوشتن. SPEAKER 1: ما در حال نوشتن آن است. دوست داشتنی. OK، بنابراین ما باید این فایل را در حال حاضر. چه باید انجام دهیم؟ رسید چک کنید اگر آن را تهی. SPEAKER 1: بررسی کنید که آیا آن را null-- دقیقا. این چیزی است که من دوست دارم به شنیدن. است که باید به صورت خودکار، به خصوص خیلی از این نقطه در. اگر شما segfaulting شروع، شما احتمالا آیا برای null به جایی نمی. نه بار از ده، که رفتن به خطای خود را. بنابراین اگر شما فقط می تواند در دریافت عادت، همیشه چک کنید اگر آن را تهی، زندگی شما خواهد بود خوب و easy-- یا آسان تر است. بنابراین چک کنید اگر آن را تهی. بنابراین اگر آن را تهی نیست، که چیزی است که از انفجار برابر با means-- null-- نه آن معتبر است. چه ما می خواهیم انجام دهیم؟ ما فقط می خواهید برای چاپ به آن فایل، درست است؟ پس چه می خواهیم استفاده کنید؟ رسید Fprintf SPEAKER 1: Fprintf-- دوست داشتنی. و fprintf دو arguments-- که در آن طول می کشد این رفتن و آنچه ما می خواهیم چاپ شده است. پس چه یکی از اولین است؟ کجاست آن رود؟ رسید فایل. SPEAKER 1: این رفتن به فایل. و چه می خواهیم چاپ؟ "سلام جهان!" همه راست. ما یکی از آخرین thing-- یکی دیگر از نمونه های بزرگ اینجا. رسید بستن. SPEAKER 1: بستن. شما بروید وجود دارد. رسید: آیا این اتفاق می افتد در صورتی که فایل null است؟ SPEAKER 1: نه، این است که اگر آن را تهی نیست. رسید: اوه، اگر آن را not-- OK. برای fopen و پس از آن دو آرگومان که داخل، چه آرگومان اول به معنی دوباره؟ SPEAKER 1: استدلال است درست مانند نام فایل که شما می خواهید برای رفتن به. بنابراین بعد از این اجرا می شود، شما می توانید برخی از فایل با نام "سلام" که "سلام جهان" در درون آن بود. که همه. فقط به نام. رسید و از آن به نوشتن، فایل را ندارد به در حال حاضر وجود دارد. این است که آنچه به شما گفت؟ SPEAKER 1: درست است. دقیقا. اگر "سلام" را به عنوان یک فایل هنوز وجود ندارد، آن را برای ایجاد یک فایل با نام سلام "و ارسال آن برای شما. رسید وقتی که شما گفتن برنامه برای نوشتن به فایل، چرا شما ارسال "فایل" به جای نام فایل و fprintf-- SPEAKER 1: از آنجا که در این مورد، ما باید که FILE-- بزرگ همه در ستاره caps--، فایل. پس از آن یک اشاره گر به فایل که شما در حال صحبت کردن در مورد. این راه این است که ما فقط به آن مراجعه کنید. بنابراین در این حالت، شما می تواند از قلب file-- فکر می کنم، ما می توانیم this-- فایل اینجا استفاده اشاره به افتتاح "سلام" و اجازه آن را ارسال. رسید می تواند ما را به یک "سلام" به جای [؟ تنها؟] F فایل؟ SPEAKER 1: نه، چرا که "سلام" نیاز به باز و نوشتن باشد. فایل اینجا مثل یک دهنده است که می گوید بسیار خوب، ما این hello-- file-- که ما به دنبال در. این باز شده است. و ما در حال رفتن به ارسال آن. اگر شما فقط از "سلام"، است که در آن محصور شده. بنابراین آن را به دمدمی مزاجی. منظور من، شما می توانید آن را نام برد. شما می توانید فایل انجام داده اند، ستاره، "سلام"، که برابر است با. اما در کل نکته این است که شما نیاز به یک اشاره گر فایل را به منظور ستاره قادر به استفاده از این توابع. رسید می توانید انجام دهید فایل، ستاره، فایل، "سلام" یا شما باید برای قرار دادن فایل ستاره، فایل های آن؟ SPEAKER 1: شما می توانید انجام فایل، ستاره، "سلام." شما می توانید این را تغییر دهید هر نام شما می خواهید. این کاملا خودسرانه آنچه که به نام است. شما می توانید هر چیزی را به نام. نام و نام خانوادگی آن اسپاگتی پرنده، اگر شما می خواهید. رسید چیست "W" در نقل قول ها برای؟ SPEAKER 1: "W" فقط حالت است. بنابراین ما در حال نوشتن به این فایل. هر کس خوب است؟ پاک کردن؟ بله. رسید بنابراین، هنگامی که آن را به این می نویسد فایل، که در آن ما پس از آن که فایل؟ SPEAKER 1: این را در همان دایرکتوری که شما در حال حاضر در آن هستید. اگر شما در سه pset هستید و شما این را اجرا در pset شما سه پوشه است برای رفتن به این فایل با نام "سلام." سرد؟ هر کس خوب است؟ احساس می کنم مثل همه شما هستیم گرفتن آن، که بزرگ است. OK. بنابراین بازگشت به show-- اسلاید من من دوست دارم وقتی همه چیز کار می کنند. OK، آیا شما بچه ها هیجان زده pointers--؟ اشاره گر بزرگ است. آنها را کمی قرار دادن سر خود را در اطراف. این سال دوم من است اشاره گر آموزش. و من فکر می کنم من در نهایت آن را کردم. بنابراین اگر تلاش شما، آن را OK. همانطور که قبلا گفتم، طراحی عکس ها کمک می کند تا به مقدار زیادی به چیزهایی که در CS، تا آنجا که من فکر می کنم مردم تمایل دارند به فکر می کنم آه، ما در یک کامپیوتر است. ما فقط باید کد. تصاویر نقاشی No-- واقعا به شما کمک خواهد کرد. و من واقعا شما را تشویق به شیر را به سمت خود kindergartner و آن را از مداد رنگی و یا نشانگرها و قرعه کشی. از آنجا که آن را به شما کمک خواهد کرد. و اگر شما من را ببینید در ساعات اداری، I حمل خواهد شد در اطراف پشته های کاغذ با قلم رسم مسائل را. بنابراین به خصوص با pointers-- تصاویر قرعه کشی. و من مطمئن هستم که ما در واقع به رفتن هستم به رسم برخی از تصاویر در اینجا بیش از حد. پس شما بچه ها همه رو به دیدن Binky، این چیزی که claymation سرد. و ما فکر می کنم این واقعا خنده دار وقتی که او را به یک دسته از قطعات منفجر. این برخی از تسکین خنده دار برای کلاس است. C [نامفهوم] این توانایی بزرگ قادر به کنترل حافظه است. و این یکی از چیزهایی است که واقعا آن را می سازد مانند یک زبان قدرتمند است. اما با قدرت های بزرگ می آید مسئولیت بزرگ است. و همه چیز دیوانه اتفاق می افتد اگر شما مراقب نباشید. بنابراین، هنگامی که شما با استفاده از اشاره گر، می خواهید مطمئن مطمئن هستید که واقعا درک دقیقا همان چیزی است که شما انجام می دهند. امیدوارم کمی بعد از زمان کمک خواهد کرد که شما واقعا درک اشاره گر، نحوه استفاده از آنها، و چگونه آنها را دستکاری کنند. بنابراین من مطمئن هستم که ما memory-- ام قبل از دیده می شود این نمودار. پس این فقط یک نمودار ساده است چه کارهایی ممکن است ذخیره شده در حافظه. بنابراین شما اساسا این داشته آرایه های بزرگ از بلوک های یک بایت همان چیزی است که ما باید کمی here-- افزایش توسط یکی در هر زمان. این است که در سحر و جادو [نامفهوم] بنابراین بلوک های هشت بیتی. و هر بلوک مرتبط با برخی از آدرس هگزادسیمال. بنابراین اگر شما همیشه دیدن 0x، که فقط نت که آن یک آدرس هگزادسیمال است. شما می توانید فرض کنیم این بدان معنی آدرس در حافظه است. ما در حال صحبت کردن در مورد آدرس حافظه هر زمان که شما هگزادسیمال را ببینید. ما وقفه متغیر هستند، شناور متغیر ذخیره می شود. بنابراین وقفه وقفه فروشگاه. فروشگاه شناور شناور. پس ما نیز باید اشاره گر که آدرس حافظه ذخیره کنند. این یک نوع از نقشه است. اشاره گر به طور انحصاری آدرس حافظه است. به طوری که مانند نوع خود وجود دارد. لوازم خانگی شما 32 بیتی، که به معنی که آدرس حافظه خود را چهار بایت است. بنابراین هر اشاره گر است که شما باید همچنین رفتن به چهار بایت. و یا دیگری اگر آن را به چهار بایت، حافظه چهار بایت است. حافظه فروشگاه اشاره گرها. بنابراین، آنها چهار بایت است. Cool-- فقط می خواهم به تقویت است که. شما باید این کمیک در حال حاضر دریافت کنید. من نمی دانم که چگونه بسیاری از شما طرفداران xkcd، اما من دوست دارم xkcd. این فوق العاده است. همه راست. بنابراین ایجاد pointers-- همانطور که گفتم، آن را تقریبا هر چیز دیگری فقط می خواهم. شما باید یک نوع. شما باید یک نام. درست است؟ این چیزی است که ما وجود دارد. [؟ سحر و جادو؟] ستاره به معنی آن است که یک اشاره گر است، و پس از آن هر آنچه می خواهید به آن تماس بگیرید. بنابراین نوع نشان دهنده آنچه شما می توانید ذخیره کنید. همه درست است؟ در راه همان است که اگر ما وقفه، ما می دانیم که ما در حال ذخیره سازی یک int وجود دارد. با یک اشاره گر، آن دارای یک آدرس حافظه است. اما آنچه در آن به معنی that-- است در اینجا است که یک نقاشی در حال رفتن به در مفید آمده است. بنابراین در این مورد، ما باید برخی از value-- اجازه دهید بگویم چهار. چهار در یک آدرس. OK؟ این یکی از اولین در اینجا به معنای که آن را به یک اشاره گر 2X است. درست است؟ این برخی از اشاره گر X است. X ممکن است چیزی، هر چه. هر چه می گویند is-- X X چهار است. آن را برای ذخیره آدرس حافظه در اینجا. بنابراین متوسط، ستاره، x-- این است برخی از اسلات دیگر در memory-- که می داند این چیست. اما آن را به ذخیره یک آدرس در اینجا. بنابراین این امر می تواند like-- در این مورد، هر، در 0x1-- ذخیره هر ذخیره شده است در آدرس که اشاره گر ما نگه می دارد، به مطابقت با آنچه که ما تعیین کرده ایم. بنابراین در 0x1، در این مورد، این X است. این فقط می تواند همیشه یک است در حالی که ما از نوع int با استفاده از این. به طور مشابه، اگر ما 1y دیگر، هر چه آدرس ذخیره شده است با Y است به همان چیزی که char-- با Z. در همین راستا، هر زمان که شما امتحان کنید و انجام intx برابر 0.4، آن را به فریاد زدن در شما می شود و شبیه هیچ، به شما گفت که شما می خواستم یک int. این تصور می شود یک int. توقف تلاش برای آن شناور می شود. بنابراین اجازه دهید همه چیز آنچه که آنها می خواهند. اجازه دهید همه چیز خود باشد. پس بزرگ است فقط هر نوع اشاره گر از آن است، که این تنها چیزی که شما وجود دارد می توانید ذخیره کنید. OK؟ با تمرین، به عنوان با هفته گذشته، همه چیز به نظر می رسد واقعا نوع انتزاعی. ما قصد داریم برای انجام برخی از تمرین. آن را باید حس کند. بنابراین ارجاع و dereferencing-- آن واقعا مهم است برای دریافت این راست. من هنوز هم به روز کردن در هر حال حاضر و پس از آن. و من دوست دارم صبر کنم، که یکی نمی خواهم من؟ بنابراین در واقع علامت را خواهد شما مرجع یا آدرس. پس از آن آدرس را در بر می گرداند حافظه که متغیر ذخیره شده است. بنابراین آن را به واقع به شما بازگشت هگزادسیمال، در حالی که هرگاه آن در واقع رفتن به شما بدهد داده است که وجود دارد ذخیره می شود. OK؟ بنابراین ما قصد داریم تا در یک مثال نگاه واقعا سریع، و یا در واقع تا بعد. OK. بنابراین ما باید به فکر می کنم واقعا با دقت در مورد این. بنابراین در اینجا ما به برخی از عدد صحیح X. من قصد دارم به امتحان کنید و در قرعه کشی این به بهترین توانایی من است. بنابراین ما در حال رفتن به این اسلات X. و آن را ذخیره سازی پنج. آدرس خود را 0x4 است. سرد؟ همه خوب است. بنابراین در حال حاضر ما به این اشاره گر. این بیش از اینجا بود. و & را به ما می دهد آدرس چیزی. بنابراین، در این مورد، آن را به آدرس X است. آدرس X چیست؟ 04-- و این اشاره گر در 0x08. سرد؟ بنابراین شما می توانید در مورد این فکر می کنم اشاره گر، 04، فقط اشاره در اینجا. و آنها به نام اشاره گر چون همانطور که ما بیشتر به این، شما در حال رفتن برای دیدن اشاره به چیز. و یک بلوک با اشاره به یکی دیگر از بلوک خواهد حس خیلی بیشتر. بنابراین در اینجا دو هستند. و سپس ما به برخی از کپی، که 0x0c what--. و آن را به ارجاع اشاره گر ما است. پس چه آن را گفت OK، در اینجا اشاره گر ما است. ارزش این فروشگاه 0x04 چیست، و آن گفت: به این آدرس بروید و به من بگو آنچه در آن است. به طوری که به طور موثر آنچه در این فلش در حال انجام است. شما می توانید از این مثل ستاره خود را فکر می کنم. بنابراین OK، زمانی که ما انجام ستاره، به این معنی را دنبال کنید. برو به این آدرس. و اساسا فقط زیر این فلش به این بخش حافظه است. و ما را به آنچه در آن است، که 5. این که چرا ما نسخه تا 5 برابر است. آیا این را حس؟ آیا کسی به من نیاز را از طریق رفتن که دوباره، و یا آهسته تر؟ شما می خواهید من برای رفتن از طریق آن یک بار دیگر؟ OK. ما در حال رفتن به آن را دوباره ترسیم دوباره. هنگامی که ما شروع، همه قبول داریم ما برخی از تکه از حافظه است که یک متغیر است X است که ما را به 5 برابر است. ما را کنترل که در آن در حافظه است. بنابراین این نقطه است که فقط خودسرانه اختصاص داده است. خوب وجود دارد؟ OK. سپس ما مقداردهی اولیه اشاره گر به یک int. به همین دلیل آن را اجازه به نقطه را به X چون ما یک int در اینجا. ما تکه دیگری از حافظه چرا که این اشاره گر یک متغیر درست مثل هر چیز دیگری است. این خودسرانه اختصاص داده برخی از فضای موجود در حافظه. و آنچه در آن فروشگاه به آدرس X است. علامت به معنی آدرس X. پس چه آدرس X است؟ رسید این zero-- SPEAKER 1: 0x04. بنابراین then-- یکی از آخرین. در حال حاضر برخی copy-- دوباره فقط متغیر دیگر. بنابراین اجازه دهید برخی از مکان های دلخواه اختصاص دهید. و ما ارجاع اشاره گر ما است. ستاره به معنی رفتن به آدرس اشاره گر در من ذخیره شده است. به من بگو چه چیزی وجود دارد. بنابراین آدرس های ذخیره شده در اشاره گر ما 0x04 است. بنابراین ما به آدرس بروید. این اشاره به آن آدرس. چه در داخل این بلوک حافظه؟ این پنج است. بنابراین این چیزی است که ما کپی ما اختصاص دهید. هر کس خوب است؟ سرد. تصاویر Again--. بنابراین ردیابی مقادیر here-- من اجازه رفتن به شما بچه ها فکر می کنم در مورد این. ما می توانیم عکس دیگری را جلب کند. اما من می خواهم شما را امتحان کنید و دلیل از طریق این در خود را برای یک دقیقه. از آنجا که آنها انجام نمی دهد ما یک آدرس به عنوان مثال، من فقط رفتن را به انجام x-- علامت که باید آن را به خانه رانندگی کمک کند. علامت به معنی آدرس. بنابراین در یکی از اولین، هر کس با خط اول. برخی X مجموعه ای است five-- برخی از حافظه تصادفی در حافظه است. اشاره گر ستاره بین المللی برابر است با به آدرس X، درست است؟ بین المللی اشاره گر ستاره ایجاد این بلوک، خواستار آن اشاره گر، و آن را به آدرس X اختصاص می دهد. من وحشتناک در آمپرسندهای کاربردی هستم. در حال حاضر آنچه ما انجام می دهیم این است که ما می گویند OK، ارجاع اشاره گر ما است. بنابراین ما به OK، چه در اشاره گر ما؟ این علامت X است. برو به علامت X و جابهجا آن. بنابراین در حال حاضر، علامت X در حال رفتن به 35. بنابراین اساسا، هنگامی که شما هستید هرگاه، شما بروید OK. شما در حال رفتن به رسم شود تصاویر شبیه به این. شما در حال رفتن به رسم شود فلش خود را بیش از جایی که در آن است. بنابراین این حافظه در حافظه بروید و یا من که ارزش به عقب، یا تغییر آن. در این مورد، از آنجا که ما در این هستی ارزش، ما آن اختصاص به 35. در حالی که در گذشته یکی، اگر شما متوجه ما اختصاص شد چه بود در اینجا به چیز دیگری. به طوری که آنها این جدول بسیار جذاب است. این که بد نیست. شما بچه ها بر روی آن کار می کنند. من قصد دارم به آن را بیرون در هیئت مدیره. ما قصد داریم آن را پر کنید با هم، OK؟ پس گرفتن برخی از مقاله، با شتاب یک شریک، شروع به کار می کند. من قصد دارم برای گرفتن قطعه بزرگتر از گچ. از آنجا که آن را به مقدار زیادی. OK. استاد: OK. بیایید با سطر اول شروع می شود. ما وجود دارد را شروع می کنیم، و سپس شما بچه ها می توانید از طریق شاید بیشتر کار می کنند. OK. برابر است با حاصلضرب ب ج پس چه شده است؟ این یک سوال ترفند نیست، من قول می دهم. دانشجو: 4 بار 5. استاد: 4 بار 5. 20. پس چه ب؟ دانشجو: 4. استاد: و C؟ دانشجو: 5. استاد: 5. و پس از آن این است که فقط رفتن به علامت شود، علامت B، علامت C، درست است؟ بد نیست. این به اندازه کافی ساده است. OK. بنابراین یک بعدی. برابر با بار C، در صورت هر کسی با آن نا آشنا بود. آیا همه آشنا با بار برابر؟ OK، این همه means-- این است خلاصه نویسی برای یک بار معادل ج. شما همچنین می توانید آن را با تقسیم انجام دهند، با علاوه بر این، با تفریق. شما می توانید یک برابر انجام دهید، یا به علاوه برابر C به معنی برابر C همراه، منهای برابر C خواهد بود برابر با منهای ج. این فقط قند نحوی است. بنابراین، در این مورد، برابر است با بار ج به ما چه می دهد؟ باز هم، نه یک سوال ترفند. دانشجو: 100. استاد: 100. آیا هر چیز دیگری را تغییر دهید؟ شماره شاید من در نهایت خواهد شد بهتر است در آمپرسندهای کاربردی من. دانشجو: OK، با عرض پوزش، چگونه شما 100 شد؟ استاد: OK. بنابراین به یک برابر است بار C، بنابراین یک بار ج. دانشجو: آه، شما با استفاده از برای previous-- استاد: بله. بنابراین این ارزش ترین های ما هستند. این همان چیزی است که شما باید با استفاده از ما حرکت به پایین، OK. بنابراین، ب تنها چیزی که در حال تغییر است، درست است؟ بنابراین اجازه دهید در هر چیز دیگری پر کنید. B. چه ب رفتن به؟ می شود و یا نمی شود. پس چه شده است این کار؟ ستاره PA انجام چیست؟ دانشجو: کد به محل رایگان. دانشجو: نه، نه کاملا. بنابراین این د مرجع است. دانشجو: پس ب ارزش دست از بسته است. استاد: بله، بنابراین بسته است آدرس یک، درست است؟ پس از آن به گفت برو به جایی که یک است ذخیره شده و آن این است که ارزش می دهد. پس چه ب است؟ دانشجو: 100. استاد: 100. کامل است. OK، بنابراین کامپیوتر است آنچه در حال تغییر است. هر چیز دیگری به همان باقی می ماند. آنچه که کامپیوتر برای رفتن به؟ انتساب ساده است. کامپیوتر به بسته برابر است، و آنچه PA است؟ دانشجو: علامت. استاد: کامل. در حال حاضر ما در حال گرفتن جالب است. خوب، اجازه دهید این یکی را بشکند. اول، چه بار ب ج است، چرا که بخش آسان از این یکی، درست است؟ بار B C is-- دانشجو: 500. استاد: بله، پس آنچه که این کار، اگر آن را ستاره سرب، چه چیزی در حال تغییر؟ دانشجو: چه در این the-- استاد: چه در ب؟ دانشجو: چه در فضای است سرب با اشاره به. استاد: و سرب است با اشاره to-- دانشجو: B. استاد: B. بنابراین تنها چیزی که در حال تغییر B است، درست است. بار پس ب ج، 500. به طوری که در حال حاضر چه تغییراتی. سرد. دوست داشتنی. شما بچه ها انجام می دهند بزرگ است. همه حق است، شکستن این پایین. C در حال تغییر است، درست است؟ بنابراین ما می توانیم در هر چیز دیگری پر کنید. بیایید ببینید. OK. ما می دانیم که C است برای رفتن به حاصلضرب دو عدد، درست است؟ چه دو عدد، هر چند؟ دانشجو: A و C؟ استاد: پس است مناسب برای یکی از اولین. بنابراین ما د ارجاع p یک، درست است؟ P یک امتیاز به، به طوری که ما می دانیم که این است که به 100 بار چه؟ بار چه نقطه به کامپیوتر؟ امتیاز به. بنابراین 100 بار 100 10000 است. آیا که حس می کند؟ سرد. کشش خانه، بچه ها، ردیف آخر. OK. چه در حال تغییر است؟ دانشجو: A. استاد: A. کامل، به طوری هر چیز دیگری می تواند همان باقی بماند. OK. و چه؟ پس از آن یک بار چه؟ این سرب ستاره است. بنابراین سرب ستاره به معنی در اینجا سرب، سرب نقاط به ب. دانشجو: 500. استاد: 500. بنابراین ما باید 500 بار 100. که 50000 است. صدای سوت حاکی از حیرت یا تحسین! در آن نگاه کنید. دانشجو: چرا ما باید و C برای last-- استاد: با عرض پوزش. دانشجو: اوه، OK. استاد: بد من. تعداد زیادی از نوشتن. هر کس خوب است؟ نه خیلی بد، درست است؟ فقط طول می کشد کمی در حالی که به کار را از طریق. اگر شما آن را شکستن، درک آنچه هر بخش اشاره to-- عنوان با همه چیز آن، yes-- آن را شکستن به کوچک مشکلات و سپس ترکیب، و شما می توانید برخی چیزهای عالی انجام دهد. هستند پاسخ وجود دارد، اما ما انجام دادیم. حساب اشاره گر. آه. دستان من به همه گچی. بنابراین اضافه کردن یا کم کردن اعضای هیات تنظیم اشاره گر به اندازه نوع اشاره گر. به یاد داشته باشید که چگونه هر نوع تا به اندازه های مختلف؟ پس مثل یک دو یا طولانی مدت است هشت و بین المللی است، اما چهار کاراکتر است. پس چه می خواهید انجام دهید is-- یک چیز را به یاد داشته باشید است که فقط چقدر شما اشاره گر در واقع تغییر بر روی بستگی دارد نوع اشاره گر است. هر کس خوب با این؟ آیا من می توانم آن را پاک؟ ما خوب است؟ بسیار جذاب است. بنابراین اگر ما به برخی از اشاره گر that-- این است که رفتن به be-- من رفتن به آن اشاره گر از نوع int را. در این فروشگاه ها. اگر شما به می گویند اشاره گر به علاوه یک، چه آن را به انجام است آن را به روز رسانی آن را به اندازه یک int چرا که نوع اشاره گر است. با C، همه چیز است بسیار سخت و تنظیم می شود. اشاره گر از نوع int است که برای به روز رسانی توسط مقدار فضای بین المللی می کنند. یک int چهار بایت است. پس چه این به نوبه خود؟ شما فقط با اضافه کردن چهار بر روی این. حالا اشاره گر خود را OK be--. بنابراین اگر آن را به یک کاراکتر بود و ما اشاره گر انجام داد به علاوه یک، چه آن را در حال حاضر می شود؟ اگر started-- وانمود ما started-- در حال حاضر آن را 0x08. اجازه دهید در حال حاضر می گویند که این یک بود کاراکتر اشاره گر، اضافه می کنیم و یک. به چه تغییر می دهید؟ کاراکتر چند بایت است؟ رسید یکی. SPEAKER 1: یک. رسید بنابراین 0x09. SPEAKER 1: پس از آن خواهد بود نه. پس فقط چیزی به خاطر داشته باشید. فقط وقتی که شما یکی اضافه کنید، این طور نیست اضافه کردن یک مگر اینکه یک کاراکتر است. این اضافه کردن که چگونه بسیاری از بایت نوع آن است که، به همین دلیل است که ما باید این معادله در اینجا. پس از آن بار بین المللی اندازه از نوع اشاره گر. بنابراین ما به عنوان مثال در اینجا. Y به آن مقدار، 0x4 اختصاص داده بود، هنگامی که ما انجام دادیم به علاوه Y برابر است. آنچه در آن است، چه در x، تغییر نمی کند. چه تغییر است آنچه در Y. آدرس های ذخیره شده در Y به روز چهار چرا که چهار بایت در یک int وجود دارد و آن را یک اشاره گر از نوع int است. همه راست. بنابراین در حال حاضر ما باید از ورزش دیگری. بنابراین سوال این است که چه چیزی را چاپ خواهد کرد. هر گونه ایده ها؟ رسید تعداد شخصیت در گربه خوشحال؟ SPEAKER 1: دقیقا. بنابراین با رشته خود را می خواهم. آیا هر کس که؟ آیا ما می خواهیم از آن عبور کند؟ بله، OK. بنابراین آنچه که ما را here-- من مثل این خیلی بیشتر. من لازم نیست [نامفهوم] مسخره. بنابراین ما باید رشته ما در اینجا، گربه خوشحال. دوست داشتنی. ما برخی از مقابله با آن ما در حال پیگیری. بنابراین ما باید برخی از کاراکتر * اشاره گر که فقط برابر با STR تنظیم شده است. چه این در حال انجام آن است اختصاص برخی از اشاره گر به ابتدای رشته خود را. از آنجا که من مطمئن هستم، آن را به عنوان در سخنرانی اشاره شد، ما به شما بچه ها داده ایم این نوع داده به نام رشته. اما واقعا رشته تنها یک آرایه of-- مانند کاراکتر *. این یک اشاره گر به یک دسته از شخصیت است که پیوسته در حافظه می باشد. پس این فقط از آن مجموعه به هر رشته برابر است با شناسایی شده توسط که شخصیت اول آن است. پس این است که فقط برخی از نقطه تنظیم به ابتدای رشته برابر است. هر کس خوب وجود دارد؟ سرد. پس این است که هرگاه اشاره گر ما است. پس آن را در واقع به رفتن ما برخی از ارزش را در اینجا، در رشته ما است که ما در حال صحبت کردن در مورد. و ما در حال گفت تا زمانی که آن نابودگر تهی نیست. بنابراین ادامه تا زمانی که شما دریافت به انتهای رشته. به روز رسانی اشاره گر خود را با یکی. بنابراین R، آن را در واقع توسط یکی از به روز رسانی هر بار به دلیل این کاراکتر است، کاراکتر *. بنابراین آن را از طریق رفتن. آن را به روز رسانی. بنابراین اولین بار از این اجرا می شود، آن را می شود در اینجا در ساعت. آن را به روز رسانی. این خواهید بود. این خواهید بود P، Y، و غیره و غیره. ما مبارزه را به روز رسانی. وقتی می رسد در پایان آن، فقط چاپ تا چه حد آن را بدست. بله. رسید پس از آن شمارش فضای به عنوان یکی، درست است؟ OK. SPEAKER 1: فکر می کنم تا. این است که یک question-- رسید [نامفهوم]. SPEAKER 1: بدون نگرانی. این من که. همه حق است، بنابراین یک چیز من درک این است که با یک آرایه، شما همچنین می توانید آن را به عنوان درمان اشاره گر به دلیل آرایه تنها لکه های مستمر حافظه است. بنابراین شما می توانید آن را به همان شیوه درمان. شما می توانید آنها را دستکاری با اشاره گر، بیش از حد. بنابراین به جای انجام این کار، در این مورد، چیز مشابه آرایه خواهد بود 0 برابر 1. اما در راه همان است که یک رشته تعیین می شود با شروع که در آن شخصیت اول آن است، یک آرایه، توسط که در آن عنصر اول آن است. از آنجا که ما می دانیم، ما هستیم تضمین شده است، که این در حال رفتن به پیوسته بلوک از حافظه است. این چیزی است که اجازه می دهد تا ما را به انجام این کار. ما می دانیم که آنها به طور مداوم هستیم بلوک از حافظه است. بنابراین در این مورد، هرگاه آرایه فقط، که به ما می گوید، OK، از آغاز به آرایه خود را، که در اینجا. بنابراین شما می توانید آن را به یک تساوی. و در این مورد، هر آرایه شما نوع است، هنگامی که شما آن را به روز رسانی یک، که درست مثل به روز رسانی آن را به شاخص بعدی. شما می توانید انجام دهید که به خاطر شما می دانم که چه چیزی در آرایه شما. پس از آن می داند که چقدر به به روز رسانی اشاره گر خود را با، چه آدرس آن را به طوری به روز رسانی که شما در حافظه بعدی هستیم. پس این فقط یک راه متفاوت است نوشتن آرایه 0 برابر 1، آرایه 1 برابر 2، آرایه براکت 2 برابر 3. این یک راه دیگر در مورد آن فکر می کنم. از آنجا که آنها پیوسته بلوک در حافظه، شما می توانید به آنها مراجعه کنید یا توسط آرایه notation-- که من شخصا پیدا easier-- اما شاید شما نیاز به آن را دستکاری به شدت توسط آدرس حافظه است. و این راه شما می توانید انجام این کار است. نوع بیشتر شبیه یک نکته جالب شما می توانید انجام در مقابل شاید نه چیزی است که شما هستید در واقع رفتن به پیاده سازی. من استفاده از آن در 61. شما بچه ها احتمالا لازم نیست به نگرانی در مورد آن زیاد می باشد. اما اگر شما علاقه مند هستید، را 61 سال آینده است. ما در بچه ها کشش خانه است. من می دانم، آن را طولانی. حافظه پویا Allocation-- بنابراین ما می دانیم که یکی از از چیزهایی که ما در طول صحبت اولین بخش ما با هم، ما در یک مبادله نگاه که در آن تابع آن بود خارج از محدوده عملکرد اصلی ما است. و ما در این ارزش ها عبور شد که نسخه به طور موثر بودند. و یک بار مبادله به پایان رسید اجرا، آن را فقط به سمت چپ پشته. به یاد داشته باشید، ما یک پشته قاب برای مبادله. این برگ و کسانی که ارزش با آن را ترک کنند. و آنها رفته بودند. ما نمی تواند هر کاری بکند با آنها و ما غمگین بود زیرا ما می توانیم ارزش های ما را عوض نکنید. اما با C، به عنوان اشاره کردم، شما بسیاری از قدرت بیش از حافظه است. پس چه می توانید انجام دهید که شما می توانید است اختصاص چیز در heap در اینجا که وجود دارد تا ماندن شما به آنها بگویید در غیر این صورت. آنها مانند کودکان خوب است. آنها اقامت وجود دارد. آنها ما را ترک نکن. آنها در آنجا بماند تا زمانی که تو مانند، OK، شما می توانید از بین برود. در حالی که همه چیز در پشته، who-- آنها مانند بچه های بی ادبی هستند. آنها فقط فرار هنگامی که می خواهید وجود داشته باشد و پس از آن رفته ای. شما می توانید آنها را پس بگیرند. پس پشته is-- ما قصد داریم به صحبت در مورد malloc و آزاد، که من مطمئن هستم که شما بچه ها هستم درباره سخنرانی در شنیده می شود. و اساسا این راه به داده های بسیار مداوم است. بنابراین شما می توانید داده را نگه دارید اطراف تا زمانی که شما می خواهید. MHM. رسید می تواند پشته تعریف پشته و شما؟ آیا آنها مکان برای قرار دادن چیزهایی مانند؟ SPEAKER 1: بنابراین آنها اساسا just-- آنها راه ما فقط به حافظه مراجعه کنید. پس پشته فقط مکان هایی که حافظه به صورت پویا اختصاص داده، در حالی که پشته اشاره دارد بیشتر به پشته فریم که مرکزی بیشتر به هستند توابع که در واقع در حال اجرا. شما واقعا کنترل داشته باشد. تفاوت بزرگ، شما می توانید کنترل بیش از پشته اگر شما می خواهید. شما کنترل کمتری بر روی پشته. پشته بستگی به توابع است که در حال اجرا هستند، و نظم که در آن هستند اجرا شود، و چگونه همه چیز در حال بازگشت. در حالی که با پشته، به عنوان خواهیم دید، شما می توانید می گویند، OK، من می خواهم این مقدار به اطراف تا زمانی که من به شما بگویم در غیر این صورت. شما امکان پذیر نیست را به خلاص شدن از شر. شما مجاز به زیر پا بگذارند. شما در حال رفتن به آن را نگه دارید در حدود تا زمانی که من به شما بگویم. شما دریافت می کنید به عنوان رئیس در پشته، در حالی که شاید اگر شما stack-- مانند گول زدن راه خود را از شما می توانید رئیس. اما نه کاملا. و این واقعا فقط حافظه است. این تنها روش های متفاوتی است مراجعه به حافظه است. سرد. بنابراین با توجه به، چگونه به کنترل حافظه خود را. آن را با malloc، است که شما در حال رفتن برای رسیدن به استفاده کنید. بنابراین آن را فقط کوتاه برای تخصیص حافظه. که همه در آن است است. یک دسته از دیگر سرد وجود دارد توابع که alloc در پایان، و آنها را برای چیزهای مختلف ایستاده اند. بنابراین، هنگامی که شما نیاز به ذخیره سازی که نیاز به بیشتر از دوام بیاورید عملکرد فعلی خود را تا که زمانی که در حال حاضر خود را تابع اجرا می شود دور، شما هنوز هم داده که شما کردم از آن، شما می خواهید به استفاده از malloc. که آن را بر روی پشته مقداردهی اولیه. و من می خواهم گفت و نگه داشتن گفت، شما به آن وجود دارد حفظ تا زمانی که شما آن را در غیر این صورت، که نکته مهم در اینجا این است. بنابراین یک چیز را به اطلاع، و که به طور معمول واقعا مهم است، این است که این sizeof فوق العاده مفید برای استفاده چون بسته به نوع دستگاه شما در حال اجرا، ممکن است مقادیر مختلفی داشته باشد از حافظه است که در آن طول می کشد. بنابراین شما همیشه می خواهید به استفاده از اندازه تا که شما دستگاه وابسته نیست، به طوری که کد خود را در اجرا بر روی هر دستگاه. و این تنها بخشی است از نوشتن کد خوب است. اگر آن را در یک دستگاه کار می کند، اما هر یک از دیگران، چگونه مفید برنامه شما بود؟ بنابراین شما همیشه می خواهید مطمئن شوید و استفاده از sizeof. رسید به طوری که مانند اندازه 10 اینچ [نامفهوم]؟ SPEAKER 1: این اندازه از 10 وقفه است. آره. بنابراین اندازه از نوع داده int باز خواهد گشت چقدر یک بین المللی را. و یا اندازه کاراکتر، چگونه بسیار کند یک کاراکتر را. و پس از آن که چگونه بسیاری از بلوک های از این می خواهید؟ بنابراین در این مورد، ما می خواهیم چیزی که ما می توانیم 10 وقفه به ذخیره کنند. و آن را بدون در نظر گرفتن کار خواهد کرد ماشین، سرد است. بنابراین چند بایت خواهد شد که در واقع به شما بدهد؟ ریاضی سریع است. رسید 40. SPEAKER 1: 40. دقیقا. بنابراین یکی دیگر از چیز بزرگ. اشاره گر و یا malloc می تواند پوچ بازگشت. بنابراین دوباره، همیشه برای چک ببینید که اگر آن پوچ بازگشت قبل از اینکه شما را امتحان کنید و انجام هر کاری با آن. اگر شما سعی می کنید و ارجاع این اشاره گر در حال حاضر، آن را فقط رفتن به segfault دلیل این که شما رفت و سعی به لمس پوچ هنگامی که شما باید را ندارد. بنابراین همیشه برای null به. باز هم، همه شما می توانید انجام دهید. این ممکن است به بازگشت تهی. آن را بازگشت null اگر شما هم هستیم از فضا، و یا به هر دلیل آن را به برخی از اشکال حافظه فرار. گاهی فقط به null. بنابراین شما فقط باید برای آن را بررسی کنید. که همه این اسلاید می گوید. و سپس آنچه که ما را در اینجا یک تماس به صورت رایگان است. بنابراین در راه همان است که اگر شما باز کردن یک فایل شما باید یک فایل را ببندید، اگر شما حافظه malloc، شما باید به شما رایگان است که حافظه است. و شما بچه ها خواهد شد به انجام مسائل واقعا سرد. و یک برنامه شما می توانید به اجرا وجود دارد ببینید اگر شما تا به حال نشت حافظه است. اما شما نمی خواهید به نشت حافظه. این واقعا بد است. فقط میکشید تا چیز. این بد به انجام درست مثل برنامه نویسی عاقلانه برای بهره وری طراحی. اما آن را نیز فقط نوع از بد برای کامپیوتر شما. همه چیز پس فقط رایگان هنگامی که شما آنها را malloc. شما بچه ها اینجا را ببینید تقارن. فوق العاده ساده است. فقط آزاد و پس از آن هر اشاره گر خود را، هر نام اشاره گر خود را، و آن را مراقبت از آزادی آن را برای شما بگیرد. سرد. پس ما باید این. بنابراین ما فقط رفتن به راه رفتن را از طریق این برنامه است. و سپس شما بچه ها انجام می شود. پس [نامفهوم] فقط اصلی. بنابراین ما باید برخی از اعضای هیات * اشاره گر. بنابراین ما باید یک اشاره گر که رفتن به نگه وقفه. و چگونه بسیاری از وقفه آن را رفتن به برگزاری؟ فقط یک. اندازه یک int. ما چک کنید اگر اشاره گر تهی به خاطر آن است است، ما می خواهم بگویم هیچ چیز را نمی کنند. این بد است. بنابراین ما برخی از خطا از چاپ حافظه، اغلب بازگشت 1، عنوان شما بچه ها استفاده می شود. و پس از آن ما را در اینجا، ما ارجاع اشاره گر ما است. بنابراین این بدان معناست که ما در حال رفتن به مغازه چیزی در محل داده شده به ایالات متحده است. * بین المللی اشاره گر، یا malloc، برمی گرداند آدرس جایی که آن را کنار بگذارند این حافظه برای شما. پس از آن اساسا به شما اگر شما like-- فکر می کنم در مورد یک دسته از خانه در یک محله که شما می خواهید برای قرار دادن مبلمان در، malloc شما مثل OK، شما برای رفتن به خانه سه. و آن را به شما می دهد آدرس خانه سه. بنابراین این حق در حال حاضر، این فروشگاه اشاره گر آدرس، آدرس خانه های خود را ذخیره می کند. * به معنی PTR، OK، من در خانه من است. سرد. من نیاز به یک عدد صحیح. بنابراین شما برای کسی که درخواست در حال حاضر شما به مبلمان دهد. بنابراین شما برخی از اعضای هیات را دریافت کنید. و آن را در اشاره گر خود را که در آن با اشاره به. و سپس آن را فقط چاپ ، شما وارد هر جا. و دوباره، مرجع است. پس این است که مثل شما به این رفت آدرس و شما را دیدم چه آنجا وجود داشت. سرد؟ و پس از آن البته ما اشاره گر ما را آزاد کند. فراموش نکنید که برای آزاد اشاره گر خود را. فراموش نکنید که برای پوچ تیک بزنید. فراموش نکنید که برای آزاد اشاره گر خود را. شما باید دو چیز شما را از به یاد داشته باشید این، یا که شما باید به یاد داشته باشید. بله. رسید چیزهای [نامفهوم] مانند آن، کاراکتر * ها. چرا ما را به کسانی رایگان است؟ SPEAKER 1: HM؟ رسید: آیا کسانی که مانند رشته؟ شما گفت رشته ها درست مثل کاراکتر * ها، درست است؟ پس چرا ما نه رشته رایگان است؟ SPEAKER 1: شما فقط به رایگان اگر شما mallocing. رسید: آه، اگر شما در حال mallocing. SPEAKER 1: پس malloc و آزاد دو چیز هستند که شما باید همیشه همراه داشته باشند. F باز، F نزدیک به دو چیز شما باید با هم داشته باشد. در هر دو این موارد، برای پوچ تیک بزنید. بله. رسید بنابراین آزاد تنها اجازه می دهد چیز دیگری پس از وجود دارد ذخیره می شود این برنامه تا به آن استفاده می شود؟ SPEAKER 1: این فقط گفت: OK، من با این انجام می شود. شما لازم نیست به آن را نگه دارید در اطراف. در غیر این صورت کامپیوتر شما فقط امتحان کنید و نگه داشتن آن وجود دارد. و سپس شما آن را اجرا می can't-- به مسائل حافظه بعد. شما همیشه می خواهید آن را آزاد به دلیل آن می گوید کامپیوتر شما، OK، من هستم انجام با این نقطه از حافظه است. شما می توانید آن را به عقب داشته برای من برای استفاده در آینده. سرد؟ بله. رسید بنابراین ما با استفاده از٪ D فقط به دلیل دو برابر است که به آینده را، و یا چرا is-- [نامفهوم]. رسید شما می توانید با استفاده از٪ من؟ SPEAKER 1: شما می توانید٪ من استفاده کنید. هر گونه سوال در آخرین لحظه؟ برو جلو. رسید من فقط یک سوال سریع داشته باشد. بنابراین متغیر PTR، that's-- مانند، با اعضای هیات * PTR = malloc، که فقط گفت: آن اشاره به یک مکان در memory-- SPEAKER 1: آیا شما می خواهید [نامفهوم]؟ رسید --that است اندازه of-- هیچ، آن را OK. اما آن را فقط به یک محل در اشاره حافظه که درست مثل چهار کلمه در ادامه متن. SPEAKER 1: درست است. بنابراین اندازه malloc از نوع int می گوید، OK، من قصد دارم برای رفتن به اجرا کردن، پیدا کردن چهار بایت از حافظه را برای شما. هنگامی که آن را می دهد که چهار بایت از حافظه را، می دهد شما را به آدرس از آن جایی که شروع می شود، و این چیزی است که ذخیره شده در اشاره گر، یا PTR. خوب است. شما بچه ها نگاه کنید کمتر اشتباه از بیشتر مردم وقتی من در مورد اشاره گر صحبت می کنید، بنابراین من احساس خیلی خوب در حال حاضر. همه راست. مثل همیشه، شما بچه ها باید همه نمرات pset2 شما در حال حاضر بدست. من می دانم که برخی از ضعیف وجود داشته است چیزهایی که در آن می گوید، فرمول معتبر نیست یا چیزی. اگر شما در حال گرفتن آن، همه نمرات خود را معتبر در کنار من هستند. بنابراین من می تواند به شما ارسال تصاویری از کلاس های خود را. فقط به من و همچنین اگر شما اطلاع دهید از دست رفته هر کلاس و یا چیزی به نظر نمی رسد به کار برد. بیا به من. من فوق العاده به شما افتخار بوده است بچه ها در حال حاضر، پس از آن را. و یک استراحت خوب هفته خود را. من مطمئن هستم که من را خواهید دید از شما در ساعات اداری.