ANDI鵬:好的。 歡迎來到第四個星期 這是一個美麗的一天 在這裡紐黑文 所以我真的覺得疏 孩子散射的 今天加入了我部分,謝謝。 所以很快,就在我們 開始,今天的議程。 我們將走過去一 幾句簡短的公告。 我們有一個非常古怪的時間表 即將在接下來的兩個星期 左右,所以我們要說明一下。 其次,我知道, 大家最喜歡的topic-- 我敢肯定,這融化你的心 講座過程中,不用擔心, 那種我仍然不明白這一點。 它的罰款。 這是一個笑話。 其實我明白這一點。 但我會確保 你們得到它了。 所以,我們要花費 真的,真的很好量 時間今天談論的指針。 正如你所看到的,糖果的 今天的談話是巨大的。 我們真的要保持 that--是啊,這是正確的。 繼續服用的糖果。 我打算現在通過他們周圍。 無後顧之憂。 我們要真正嘗試 留人的血糖 ,因為大腦會燒 當今一些氧氣,因為指針 真的,真的很難。 然後我們要談 內存管理哪一種是 在相同的領域。 而且我們要動 上重定向和文件 I / O這只是語法,不錯 事情我們應該談談。 然後最後,我 要再次嘗試 離開像10,15分鐘pset4。 在幾天之內這是因為所以我們 那種將真正給你 如果你一些有用的提示 已經開始了這一點。 酷。 確定。 因此,一些公告 對於這個即將到來的一周。 評級。 我真的不知道 這一點你們有多少人 傢伙居然在我 section--你行嗎? 確定。 但是,對於那些你 誰在我的部分, 只是一對夫婦的批語分級。 評論首先,切實抓緊抓好。 你們當中誰不評論,你 知道你是誰,因為你可能 得到這個星期dinged一些造型加分。 只要確保在所有的 程序添加一些評論。 真的,風格是很容易 得到正確的點作為一個範圍。 所以對我們來說,只要 確保你是那種 的增加在所有的簡要說明 你對你在做什麼項目。 Secondly--這是一個巨大的問題 很多助教過去week-- 所以一定要確保你上傳到 正確的文件夾正確 命名方案。 為什麼我們要求這樣做的原因是 因為我們在分級過程中, 實際上上運行腳本您 自動下載代碼 所有的pset中,運行 對所有的人都正確性測試, 然後上傳你的分數 直接進入成績冊。 但是,在任何時候,如果 正確命名你的程序, 這螺絲了整個 節目給大家。 因此,合法, 這個美麗的腳本 我們已經寫了呢 這一切對我們來說,完全 崩潰,如果您還沒有 你的程序正確命名。 因此,只要上傳到正確的 文件夾,讓他們正確命名, 然後生活是美好的。 我明白你的pset回來 以你們前面 因為我很快得到他們品位。 是啊。 確定。 同時,我們要談 about--耶魯大學有一個非常,非常 古怪的時間表在今後兩個星期。 因此,那些你們的 哈佛,這並不適用。 但對於我們可愛的孩子們在耶魯大學,我們有 所謂秋季break--抱歉, Harvard--我們有 5天關閉學校。 雖然這是可愛的,它 那種打亂了我們的節奏PSET 因為pset中都將於週四,週五。 所以,如果我們不在這裡 週四,週五,我們 不能為你們工作 由於週四,週五。 所以,我們要做的is--我們做什麼 像99%確定這是發生了什麼事, 可能有一些 改變,但我認為這是 subtle--是我們要 have--這個星期是正常的。 因此,我們有我們的部分 週二其次是辦公時間 整週的其餘部分 然後pset4是由於上週五。 然後,你們都知道,作為 上週我提醒你們, 我們有我們的測驗0 週三上來。 因此,作為學生自己, 我知道,你們中幾乎沒有 球員將實際工作 您的測驗之前pset5兩天。 所以,我們要什麼 可能最終做的是, 週一晚上,我們要去 實際上,從5:30到7:00, 有一個簡要的回顧 會議議題涵蓋。 如果它是一個不明確 審查會議或一個Q&A。 這將是某種形式的審查 形式,我們將討論 有關為你們的一些話題。 然後週一和週二晚 這一周,從8:00到11:00, 我們將有辦公時間。 這些辦公時間將最 有可能是更多剛進來, 問助教你的問題有關 你感到困惑的任何概念, 他們就會種下去了你 和審查概念測驗。 測驗0,如果你在 週一,週三部分, 將週三的中 在課堂分類 - 週三。 然後,如果你在 週二,週四部分, 也將是週四在課堂上。 你真的無法選擇 你去哪一個。 如果你是一個週一,週三, 你必須去到星期三。 如果你在週二,週四 你必須去到週四。 但後​​來那天晚上, 我們可愛的工作人員,將 有一個巨大的測驗中分級方 我們將讓你的分數還給你 那一夜。 在什麼時候? 目前還不清楚,誰知道,但它會 回來給你24小時內 所以,你們希望 有一些反饋,在週五。 然後我們有一個非常古怪的一周。 所以pset5是其一 今年最困難的pset。 所以,對不起你們。 我們要去嘗試 做的是我們要擁有 一些實際的支持,那個週末。 因為,正如你們所看到的, PSET是由於秋天休息前。 我們沒有支持 你們在秋天休息 所以我們真的有種 希望這句話的, 讓我們在以得到這個, 下面就讓我們真的,真的很難 這接下來的兩個星期,得到這個測驗 並添加這兩個pset中有做 然後你們有一個不錯的放鬆 7天不假思索CS。 因此,為了使該至 發生,我們可能 要動我的第 至週日下午。 這將被拍攝下來,所以沒有 煩惱,如果你不能來。 但網上拍戲會 在那裡,訪問 讓你們有星期日, 週一,週二,上班pset5。 然後它的秋天 打破,沒有CS,然後 我們回來,它在研磨回來。 但是,這將是一個 可愛的週秋季休息 我們真的希望把它作為壓力 免費提供給大家盡可能哪些 所以,我們提出的PSET是由於 前秋突破,而不是之後。 因為it's--我的意思是,我有種感覺 喜歡它違背了目的 秋天休息,如果有以後的截止日期 在秋天休息反正不支持。 所以這是rather--我想 我們寧願專注於現在。 有沒有人有問題 有關日程安排? 什麼困惑? 是啊。 聽眾:我們仍然有 在21日的演講? ANDI彭:是的。 因此,21號,這裡將是 講座是活的哈佛大學。 我不知道大衛是拍攝 它,如果他實際上講學, 但它的將是可用 在線為你們訪問。 因此,只要確保你能開一個 小時某處在秋天休息 所以你們可以趕上 上的演講。 是嗎? 聽眾:是的。 抱歉。 我這裡couple-- ANDI彭:不用擔心。 在這裡,需要一些糖果。 聽眾:嘿,我抓住了這一點。 因此,只要回顧一下,不是明天,但 之後那個星期三,我們有一個小測驗。 ANDI彭:正確。 聽眾:而且它會be-- 什麼是問答的格式? ANDI彭:哦。 因此,我們將發送一封電子郵件, 涵蓋了深入的一切了。 但是,實際上,它只是覆蓋 已經涵蓋了基本內容 在第一學期的一半。 我們必須審查會議和問題 和答案所以不用擔心這一點。 但是,我們會去了這一點。 聽眾:是否將是,我們 把我們的電腦和代碼那裡 - ANDI彭:沒有。 這將是你們寫 並回答用手問題。 聽眾:哦。 ANDI彭:所以我們會給 從實踐和東西 所以你們可能想也許去 回重寫馬里奧的手剛 要確保你們有 如何做到這一點的想法。 因為有時當 您手工編寫您 忘了分號和東西 那是非常糟糕的。 聽眾:那不[聽不清]? 就像,你要 在your--分號 ANDI彭:是的,沒有。 我們將討論更深入 關於如何測驗佈局 以及我們如何打算檔次。 但實際上,只知道 一般格式將是你 人要么解釋代碼 - 回答的基本問題。 如果我問你,什麼是庫? 你們應該知道什麼是 圖書館不和寫下來。 或者,我可以說,編寫一個程序, 打印Hello World到屏幕上。 你們會寫,INT主要 無效的printf的Hello World分號。 是啊。 聽眾:所以它不會 到任何地方[聽不清] 問題的難易度來確定? ANDI彭:沒有。 第 我們won't--耶。 寫的全部 比賽15在20分鐘內走了。 沒有,它不會是。 第 聽眾:OK。 所以這是星期三。 在那一周,我們還 已在最困難的問題設置? ANDI彭:沒有。 所以,問題設置到期 秋天休息的前一天。 該schedule--電子郵件 實際上發出 11分鐘前就了這一切。 所以,你們只是檢查你的電子郵件。 它會在那裡。 是啊。 無後顧之憂。 酷。 對於任何常規問題 公告顯示,分級,測驗, 之前,我們深入到 指針這將消耗 我們的大多數時間段今天? 酷。 好的。 因此,沒有你們都看這個lovely-- 我不知道他們所說的。 事情那裡的粘土動畫 自爆本身,因為它 沒有正確使用指針。 那麼,你的程序將 可能打擊本身,如果你 不使用指針正常以及。 因此,我們要作 確保不會發生。 今天我們要 做一些指針樂趣。 我會走過去的事情 那樣順利,因為我認為 有可能在一個小的時間框架。 但是,以支付只是這麼多 我真的希望你們, 如果你不明白的東西, 不只是讓我繼續下去。 因為如果你不這樣做 明白了點什麼, 你可能不會 弄懂之後,我說。 所以,請阻止我,並問一個問題。 因為它都挺 的雪球在一起。 像,三分球領先進入 內存領先進入其他的事情。 所以,如果你不明白三分球, 阻止我,我們會弄明白 生活也會被罰款。 酷。 那麼有多少你們的講座, 當大衛提到的三分球, 那種你的大腦變成果凍? 是啊。 好。 我們將嘗試 脫果凍你的大腦今天。 我們要真正系統 經過究竟一個指針, 它做什麼,以及我們如何使用它們。 因此,所有pointers--所以 通常與變量 我們一直在使用的編碼,如 變量,如整數或字符串 或浮筒,他們都基本上 分配給它們的值 以及一個地址 指向該值。 所以我現在要得出這樣的權利。 我們幾乎沒有粉筆,但沒關係。 因此,例如,通常 我們已經一路 在使用變量是我們創造的 int類型的變量的名字,讓我們 只是說。 所以在這裡我們有INT x和我們 初始化的int值50。 因此,這裡的內存這一塊我們 電腦,我們已經存儲了號碼為50。 那麼,三分球開始發揮作用是 您的計算機itself--一樣,在這裡, 在物理硬盤驅動器 在我的computer--的RAM中 它不僅具有存儲有限數量。 你不能只讓存儲的東西 上面的東西對事物的頂部 並讓他們所有。 所以這樣我們動態地分配 存儲器能夠存儲我們想要的 並對其進行訪問,是由具有指針。 所以,想像一下在你的記憶空間,正確的。 如果是這樣的RAM您 計算機,你有這些小位 或嵌段或存儲器以字節 which--這些都只是小 已經分配出去的塊 硬盤驅動器您的計算機或RAM, 並在每個區塊的 你可以存儲不同的東西。 因此,例如,1 陣列在本實施例 這裡是一個字節是 由8比特組成。 數的變化取決於在 您的計算機的操作系統。 例如,你們有多少人有 聽說32位與64位操作系統 系統? 沒錯。 因此,所有這說 是,memory-- 的方式,你的電腦 管理存儲器是不同的。 這就是為什麼它是真的 重要的是了解 為什麼內存本身的功能,而 不是講究數量。 所以,我們真的不關心 怎麼這大陣 是,我們只需要關心 有多大我們需要一個int是, 有多大我們需要一個字符串 是,多大是一個指針? 確定。 因此,這將是一個很大 沉重的,密集的信息。 我想給你們一個 夫婦漫畫救濟的時刻在這裡。 你們應該都可以 現在明白這一點。 因為我們知道, 指針地址, 而這些都是由不同的變量。 確定。 酷。 CS笑話是最好的,是嗎? 所以,我們走的路 有關創建一個指針 語法是一個非常特定的排序。 與創建任何 變量的類型,它的 將是一個特定 語法我們用它來創建它。 因此聲明的任何指針時, 指針只是essentially-- 我認為重要的 指針的一部分,是 而這一個變量 兩者的值和地址, 一個指針是一個地址。 它的值是一個地址。 所以這是存儲地址 在不同的地址。 如果讓任何意義。 我們一起去了這個更詳細, 但是這是一般形式 的如何一個打印機存儲why--。 這樣就創建一個指針方式 是通過執行數據的任何類型 該指針是要 要引用和then-- 與star--,然後 指針的名稱。 所以在這裡,如果我們想 創建一個指針 指出朝向的整數,且我們 想為x指示器的名稱, 我們會做INT明星的X. 是嗎? 聽眾:所以,如果 下面這行你 做INT X,將整型明星x 指示x的位置 你定義之後? ANDI彭:非常好的問題。 我們一起去了這 一對夫婦後滑動。 是啊。 然後同樣的事 char和同樣的事情浮動。 要知道,在這一點 我們創建了一個指針, 我們還沒有實際設置 它又等於什麼。 我們還沒有實際引用它。 這裡的時候,同樣的事情 您創建一個變量, 您創建的變量的名稱, 你有沒有實際設置一個值給它。 這裡同樣的事情。 確定。 那麼,我們如何設置值指針? 它是通過引用和間接引用。 這樣的方式,我們可以參考 一個varia--的指針,在本質上 我們返回的地址在存儲器 其中的變量被存儲。 所以,如果我有一個pointer--我就畫 這一次,我們到下一個幻燈片, 但只知道,從本質上講, 在和 - 與號 和變量 - 所有 所做的就是告訴你地址 那裡的東西存儲。 而且提領則相反 這一點,這僅僅是個明星。 星只是給你的實際 存儲在該地址數據。 因此,人們給你的地址 存儲在地址, 另外給你的實際 值存儲在該地址。 所以他們兩個給 你不同的東西。 再次,所述幻燈片 所有在線讓您無後顧之憂 如果你們不能複製 下來的時候。 因此,讓我們一起來看看 在這裡這個例子。 所以,我們已經有了一個巨大的 這裡存儲陣列,對不對? 我們在那裡只是有塊 存儲器,或字節的內存, 我們可以在其中存儲不同的事情。 遠的不說,這些都是 地址點在存儲器中。 所以,任何時候你有 - 看到0X, 所有這一切都告訴你的是, 這是一個十六進制數字。 正如你們都知道,數字 可以設在不同的基地。 基10是我們一般 解讀數字。 還有基體2,它是二進制的。 在這種情況下, 十六進制的基數為16。 它是說只是以不同的方式 從零到10--或零到九 然後又A,B,C,D,E,F。 還引用不同的號碼。 大衛就在這個演講中簡要地。 如果你們是 困惑,它只是谷歌。 這裡真的很容易的方法來學習 什麼是十六進制數字的。 所有這一切真的有關 現在是為你 你們要知道, 十六進制在C中位數 告訴你 - 通常 告訴你,這是一個指針。 或者說是一個地址。 因此,在這裡本例中為int x等於5。 我們正在創建一個integer-- 類型對不起,可變 整數,我們正在對其進行初始化為5。 所以在這裡我們的內存板,我們可以 看到x是在為0x0地址 並且,你已經價值 裡面存放的是5。 這應該是有意義 每個人,對不對? 確定。 然後我們做了什麼 在代碼的第二線 是,我們已經創建 int類型的指針。 這就是整型 明星指針在做什麼。 而且等於該符號x 是給你的東西的地址。 因此x的在地址 本例中為0x0。 並使得地址正在被 存儲在該指針。 這是否有意義給大家? 因此,認為this--的 想pointers--這裡 在耶魯大學,我們有一個郵政信箱系統 其中,每個學生都​​有一個郵件 地址,你可以去 進入LW地下室 你可以隨便去搶 無論你需要從該地址。 同樣的事情發生 這裡在計算機中。 你有這些內存字節 你可以信息存儲到, 但為了要知道哪些 的信息片 你正在試圖找到匹配起來 何地,你需要一個指針 告訴你如何去那裡。 因此,例如,對我來說,我的寶箱, 我有一個特定的五位數字。 這是我的地址。 所以,我可以實際去記憶, 我可以看這個地址, 我可以去那郵政信箱 並訪問內部數據。 這是否有意義給大家 您的計算機基本上是 做同樣的事情。 因此,所有的指針做的是, 它只是創建一個存儲 和它的內存中的數據實際上是 別的東西的地址。 然後,你可以去發現。 每個人都好? 大家好我這麼遠嗎? 確定。 酷。 好的。 因此,幾乎同樣的事情和以前一樣。 因此,我們有,首先,可變 名為x其中case-- 我將這個值更改為5。 遠的不說地址 這在內存為0x0。 00。 太好了。 那麼,在我們的第二個 代碼行,我們 要創建一個指針 所謂PTR指針。 與該地址,讓我們 只是說這是在內存中為0x01。 而我們其實想 store--的符號 X允許你一個什麼樣x為地址。 和x的地址為0×00。 所以這個指針現在 實際上有地址 存儲作為什麼十獲得其值。 每個人都和我這麼遠嗎? 酷。 然後,該方式 我們會複製, 是,如果我們將宣布和初始化 int類型內存的另一個塊。 對嗎? 這將是一個int。 它會被稱為副本。 而你要get--所以 明星指針給你 從該地址的實際數據。 該符號給你的地址, 明星給你的數據。 所以數據在指針。 這個指針指向5。 因此該功能 這裡 - 明星pointer-- 雲,獲得無論是在 該塊和在這裡的商店。 每個人都清楚如何發生的? 因此,兩家運營商的權利那裡 - 連字符和star-- 只是做不同的事情 在指針使用時。 一個可以讓你的地址一 讓你的實際值。 所以一定要確保當你傢伙 編碼您不要將兩者混為一談 因為他們是完全不同的。 在這裡,我們有一個為0x01的一個很好的例子。 這是一個非常好的 少量的記憶。 在您的實際計算機 你將有 一個巨大的屁股數量那是後話 這不是很好的,不愉快的。 這將是一些垃圾的價值。 所以它要真的, 真的會打亂你的計劃。 這是非常重要的 現在,我們有 基本面下來why--一樣, 什麼實際發生時, 你正在運行這些代碼塊。 Everyone--是嗎? 聽眾:所以INT x等於INT副本? ANDI彭:沒有,因為在這種情況下,INT x-- x--的值等於5,對不對? 然後INT副本等於5。 所以,如果你將它們等同於 對方,因為他們是整數, 是的,他們會評估為true。 但是如果他們在存儲器串,像 一個大衛例如在做, 這是不同的,因為 他們引用 在內存場所地址 他們將相當於為false。 所以,在這裡,因為你是這將是真實的 直接比較values​​-- integers-- 但在其他你 參考點。 因為一個字符串是在一個陣列,並 all--我們將談論這個later-- 但陣列本質上只是一個 指針一堆內存中字符的。 因此,這些都是有點不同。 但在這種情況下,是的, 你能做到這一點。 聽眾:你能解釋一下 副本的地址? ANDI彭:是的。 所以這是just--我 沒有填寫值 但它只是一些隨機其他 垃圾的價值,我們不關心。 因為一旦你開始計劃 你知道,我們實際上並不 真正關心什麼 實際地址, 我們只需要知道 什麼是在地址。 是啊。 聽眾:為int的下一個明星 第二條線,那是不同的than-- ANDI彭:是的。 聽眾:--the取消引用 並引用明星? ANDI彭:是的。 因此C--的作者誰 決定寫的語言C-- 是不是很聰明。 他們不是很聰明的嘗試 弄清楚為什麼我們應該這樣做。 如果是我,我肯定會 使用兩個不同的字符。 但他們決定使用同一個。 因此,一個int後的明星, 它告訴計算機 你是要創建一個指針。 但是,如果你想提領 something--換句話說, 去的地址和拉 從somewhere--數據 明星用不同。 所以,你倆要小心 沒有搞亂的兩種用法。 酷。 是嗎? 聽眾:所以只是重複到 確保我following-- ANDI彭:完全罰款。 聽眾:--in的左手側 該幻燈片,我們這樣做,我們知道的事情。 我們宣布一個整數 [聽不清]是等於5。 ANDI彭:是的。 聽眾:對。 然後我們有一個int明星的事情, 上面寫著那種,OK,像我們 聲明一個整數,現在 我們宣布一個指針。 ANDI彭:正確。 正確的。 聽眾:是嗎? 而我們的指針PTR。 ANDI彭:是的。 指針的名稱是PTR。 指針。 聽眾:然後它 等於NX,只是告訴C 它希望訪問的值 x--值的整數x整數 被分配。 ANDI彭:小心 因為符號實際上x 告訴你 - 電腦,你 想拉什麼x是地址。 因此,符號給你 地址,星級為您提供的價值。 聽眾:所以我們想要的地址。 比方說,x為at-- ANDI鵬:實際上我們 知道什麼x是吧? 因為我們知道X was--我 使這件事,但我們只能說, 隨意,這是為0x00。 對嗎? 所以我們知道地址為0x00, 所以當我們去和符號X, 我們知道這 應該評估為0x00。 這就是為什麼我們存儲的 作為我們的指針的值。 這是否有意義? 聽眾:是的。 而副本去提領ptr-- ANDI彭:對。 聽眾:可呈現為 我們已經指針 聲明告訴我們 整數x的地址。 ANDI彭:是的。 聽眾:而在這 一種情況下,星ptr導 等於x的哪個等於5的值。 ANDI彭:正確。 聽眾:酷。 這是一個簡單的方法來獲得 即或是唯一方式 - ANDI彭:所以現在它 似乎不是很合乎邏輯的我們 花這一切時間做 這個超級複雜的事情時, 我們所做的只是創建兩個 與5的值的整數,對不對? 它沒有意義。 但是,一旦我們就去了 內存分配還有 - 我們將 走了過來,為什麼這可能是 方便和有用以後。 相信我,當我說我們不只是 為您創造這些任意函數 你們學習,因為我們是 想惹你。 有實際使用所有這些 的事情,我們會談論他們。 聽眾:真棒。 ANDI彭:是的。 聽眾:[聽不清]。 ANDI彭:這個問題問得好。 聽眾:[聽不清]。 ANDI彭:這不是。 這真的不是。 聽眾:--two變量 這也等於[聽不清]。 確定。 ANDI彭:是的。 確定。 在我繼續前進,是每個人都清楚了嗎? 我知道泰勒,你有點晚了。 這是確定的。 這是在網上。 你看前20 分鐘,你就會被大家看好。 確定。 酷。 好的。 樣的,所以這是一個基本上 類似的事情,我們只是做了。 它只是在圖形形式。 如果你要跟踪什麼 就這樣發生了,詮釋x等於5, 我們所做的在這一點上是 創建一個名為x int類型的變量。 我們要保存 的這5內在價值。 有沒有指針,因為我們還沒有 實際上創造了一個指針呢,對吧? 然後在下一 行,詮釋明星指針, 這就是我們實際上 實際創建的指針 我們正在制定的 等於,或引用 指針,以符號的X. 這是哪裡的地方在 記憶這事是。 我其實並沒有理會 組成一個值這個時候。 但在這種情況下,該點 您會等於。 再往下還有,明星 指針反引用。 這就是我們 拉動信息。 所以當x是值實際上是 將是等於35。 所以在這一點上,我們基本上已經 只是重新初始化X要35 沒有實際接觸的X. 只需通過指針 這是指向X, 我們其實可以改變什麼x為。 我要畫這一點為好。 所以在這裡,我們已經創建 這裡是一些隨機地址。 遠的不說,又為0x00。 讓我們只說這是地址。 我們已經創建了一個整數名為x 我已經分配給它的值是5。 在第二行,整數 pointer--所以現在我們已經 得到這個第二件事 這裡被稱為pointer-- 我們打算用於:我們只能說 它的一些其他隨機的內存地址。 所以,我們要設置這個 等於不管是什麼樣。 與該指針是要 指向x的值 然後,如果改變 the--如果我們做明星的指針, 這是怎麼回事的 我們指針的值。 在這種情況下,它的將跟踪 這支箭過來x的這個值 而這將其更改為35。 實際上,我們只是改變 X =無接觸的X. 通過剛才引用指針, 我們可以去改變x的值。 這是否有意義? 因此以這種方式,我們實際上可以重新命名 和重新改變並重新分配值 以我們沒有的東西 實際上使我們自己。 這是否有意義給大家? 酷。 確定。 因此,複雜的圖形在這裡。 通過走行線。 從本質上講,只是做的確切 同樣的事情,我只是做了。 在我繼續前進,我 真的想只是讓 確保每個人都對這個真的清楚。 所以在這裡,我們有代碼 INT a等於3,B等於4,c等於5。 因此,我們已經創建了一個名為三個整數 a,b和c表示等於3,4和5。 然後,我們創建三個指針 這一點每一個這些變量。 現在我們要去 走在本質 當你對他們的工作會發生什麼。 所以畫出來。 取paper--我做不成片 知道你們都有紙張, 但那些你們誰不這樣做,也許 那些你們誰借錢。 取的紙張 並線走線。 而在你做的每一個操作, 我希望你們真正寫出來 什麼是,b和c在此點。 什麼是地址,什麼是 指向a,b和c中的指針 在這一點? 然後希望這 那種會加強你們 通過如何看待指針。 我們不會去 通過所有這些。 也許我給你five-- 像,三分鐘。 獲得第幾開始。 呵呵。 哎呀。 聽眾:在第二行,為什麼 是不是明星[聽不清]變量? ANDI彭:記得在 運營商,在第一週, 我們談到了如何 如果你這樣做等於加, 這只是意味著一個等於加C。 在此case--所以這是另一 方式在其中星也可以使用。 除了參考 並聲明指針, 請記住,這也 意味著乘法。 因此,在這種情況下,剛剛 是等於C時代。 這只是不同 編寫方式。 聽眾:一等於C時代。 ANDI彭:是的。 聽眾:這是什麼意思,如果 它說,一個符號的信? ANDI彭:&符號的手段 你要that--你 要指針的地方 指向和拉動的地址。 因此,符號給你的地址, 明星給你那裡的實際值。 聽眾:難道我們 通過線建設上線? ANDI彭:你 通過線的基礎上線。 所以只是去一行 一時間和then--你 不必擔心 完成整個事情。 讓我們試著打通 也許二,三線 然後,我們將召集和完成這一點。 這是完全確定的,如果你們都將丟失。 這是一個很艱難的概念。 如果你們是擔心類 是這樣的像大衛說, 它沒有。 我們到達 困難的概念性高峰 然後它會 向下傾斜。 所以你們幾乎沒有。 我們有很多的糖果來獲得 你們通過駝峰。 我認為倒台後幾乎 打破我們會渡過了難關 和生活都會好起來。 所以不用擔心的。 好的。 我給你們20 多秒的收官。 確定。 好的。 讓我們一捅這個。 正如你們給我的答案, 我只是要他們輸入。 並希望we--可以嗎? 我其實不能輸入。 我就畫在黑板上。 因此,這裡的這個第一線 我們有一個等於B型星溫度。 此外艾略特提出了一個 真的,真的好點。 因為我忘了,除了 兩種方法,我們可以使用星號, 這事實上是在第三條道路。 乘法。 所以,只是沒有得到困惑,因為 這是利用明星的第一種方式。 它只是告訴電腦 我是要創建一個指針。 通過做第二種方法 Star的指針, 告訴你想要的指針 在該指針來訪問該數據。 然後,當然,還有 只是簡單的乘法 兩個數字之間,告訴你 我想乘兩個。 因此,有很多的方法 我們可以使用星號。 不要混淆。 只要確保你們理解 正是他們三個 在做什麼。 因此,在這個第一線, a等於b乘以℃。 所以,讓我們通過什麼 是,什麼是B,什麼是C? 什麼是一個指針時, 指針為b,並且指針到c? 那些是什麼都等於? 確定。 因此,我們開始了與一個等於3, b等於c 4,和C等於5,對不對? 所以這第一行之後,就可以 有人告訴我,什麼是? 是啊。 隨意剛喊出答案。 20。 好。 什麼是B' 聽眾:4。 ANDI彭:什麼是C嗎? 聽眾:5。 ANDI彭:耶。 好。 什麼是PA,PB和PC? 聽眾:000001和002? ANDI彭:是的。 這麼樣的腦筋急轉彎 但不是真的,因為在這裡我 抽出實際的回憶。 但是,因為對於一個例子,我們不 其實知道這些數字是, 我們只能說符號。 我甚至不知道我是否 可以得出一個符號。 這是like--你怎麼辦呢? 聽眾:喜歡畫畫八。 ANDI彭:像八。 喜歡這一點。 確定。 聽眾:賓果。 ANDI彭:殺死它。 所以AMPERSAND一個,你可以做到這一點。 因為我們實際上並不 關心的是,值 是,這是一些長 屁股價值反正, 我們只用榕 說一個符號。 那麼什麼是PB? 聽眾:[聽不清]。 ANDI彭:是的。 酷。 好的。 先易行。 我們得到了這一點。 指針很容易。 這是確定的。 第二道防線。 所以明星等於是一樣的 話說一件事等於C時代。 這是寫的只是一個更簡單的方法。 因此,我們不試圖使 一個點或任何東西。 因此,與第一線完成。 什麼是在第二行上 以後你做了等於C時代? 聽眾:100? ANDI彭:這是100。 好。 如何關於B? 聽眾:[聽不清]。 ANDI彭:如何C嗎? 聽眾:[聽不清]。 ANDI彭:又有怎樣的指針? 是否they--一樣的,對不對? 確定。 現在,第三行。 有點麻煩。 b等於c星PA。 誰能告訴我,第一, 哪些呢星級PA平等嗎? 聽眾:這是值 一個儲存在。 ANDI鵬:沒錯。 什麼是價值 一個儲存在? 聽眾:100。 ANDI彭:OK。 那麼,什麼會是一個後 執行該行代碼? 聽眾:[聽不清]。 ANDI彭:什麼關於B? 聽眾:100。 ANDI彭:是的。 然後一切是 幾乎不變的,對不對? 因為我們沒有觸及它。 酷。 第四行。 稍微複雜一些。 所以pc--再次,PC是指針 這指出C--等於年利率。 什麼是? 聽眾:100。 ANDI彭:什麼為b? 聽眾:100。 ANDI彭:什麼是C? 聽眾:5。 ANDI彭:什麼是PA? 聽眾:與符號一個。 ANDI彭:PB? 聽眾:與號灣 ANDI彭:和棘手的,什麼是電腦嗎? 聽眾:與符號一個。 ANDI彭:耶。 宇豪。 你們看到了嗎? 這是所有的權利。 這不是太糟糕了。 我們有更多的糖果,如果這還不是全部 正確的,但我認為它的一切權利。 我們打算走過去只有一個 之前,我們就越難打的人多。 這些問題的答案我在這裡。 從本質上講,知道這是 就像數學在這一點上。 當你有簡單的公式像 再加上B,A C時代,這是很容易做到。 當你開始擴大後, 它,只是為了去操作的。 同樣的事情了。 保持跟踪,如果你的 明星是什麼了。 這告訴你的價值。 如果你有一個和之前 東西,它會告訴你地址。 你應該分配任 的指針或該值。 所以,讓我們在這個 最後一個真正的快。 這不是最後一個,對不起。 其實,你們可以挑選。 哪一個做你們想要去 過出剩餘的三個的 我們有嗎? 我不認為我們可以做的 因為我們不能只是跳轉到該行。 確定。 你們沒有選擇, 這僅僅是三分之一到最後一個。 星PC等於b乘以℃。 聽眾:星PB? 聽眾:星PB。 ANDI彭:對不起? 聽眾:星PB。 ANDI彭:星PB。 哦,我的壞。 星PB等於b乘以℃。 我想給你們10秒。 只是很快的想法。 這是我們有這麼 到目前為止,什麼後,我們發生 執行該第五行權呢? 確定。 什麼是? 聽眾:100。 ANDI彭:100。 什麼為b呢? 聽眾:500。 ANDI鵬:好的。 是否有人想解釋 對我來說這是為什麼500? 我不覺得我們 實際上碰過灣 我們是怎麼改 的B不接觸B值? 是嗎? 聽眾:因為星PB 是指在pb--價值 ANDI鵬:沒錯。 聽眾:可呈現為b。 ANDI鵬:沒錯。 所以在這裡我們的圖中,我們的指針 PB實際上是指向這一權利 在這裡,這是實際的物理灣 所以,如果你去 你做明星PB,這是 下面您將鼠標指針箭頭 和物理上改變b的值。 所以這就是為什麼我們B改變為 500沒有實際接觸灣 然後一切依舊 同樣的,因為我們沒有觸及這一點。 這是灣 酷。 而then-- 觀眾:我只是有一個問題。 ANDI彭:是嗎? 聽眾:因為we've-- 不再有符號C, 這是否意味著一個符號 重定向到現在同樣的事情? ANDI彭:是的。 So-- 聽眾:所以箭頭 那種只是移動和 - ANDI彭:所以essentially-- 聽眾:--now我們不能access-- ANDI彭: - 當我們 提領Çon--我偽造。 那是什麼? 第三行? 四。 第四行。 所有我們所做的是,從本質上講, 改變這種箭頭 並將它指向了一個來代替。 聽眾:所以我們不能訪問Ç了。 ANDI彭:如果你有這個確切 號碼,你可以訪問它。 但是,沒有。 我們沒有一個指針 指向Ç了。 我認為,如果你想 再次訪問它,你 將創建另一個 指針重新指向到c 或提領這一點,並指出回來。 所以,不,截至目前,三 三分球,他們沒有指向C。 每個人都好? 答案是否在線。 隨意,節後,去了 過去兩年和測試自己。 同樣的概念,只是一個 有點棘手。 通過對邏輯只要按照 為什麼事情是不同的東西。 並且暗示,指針 我們愛的話題 對測驗覆蓋,因為他們 概念上非常具有挑戰性。 因此,我建議你 傢伙都評論此圖 或斜線類似概念 這是你的測驗之前下週。 聽眾:對不起。 ANDI彭:是嗎? 聽眾:[聽不清] 最後埃德蒙頓[聽不清]。 ANDI彭:50,000? 我需要遵循它背下來。 但somewhere--我覺得行 之前,你創造巨大的c值。 c等於這個巨大的東西 也就是100倍500。 第 聽眾:[聽不清]。 ANDI彭:是的。 100乘以100是10,000。 這是10,000。 所以背下來有你 乘b和c。 使得指向b--指針 這是500--倍的值A-- 聽眾:[聽不清]。 ANDI彭:也許這是錯誤的。 聽眾:不,不,不是這樣的。 [聽不清] 指針位於c現在指向A-- ANDI彭:是的。 他是對的。 聽眾:--IT是其在平等 一個times--這是c的值。 ANDI彭:你能說一點點 位高​​漲所以每個人都可以聽到你? 聽眾:所以指針C現在點 到什麼用的一個指針指向 用於:仍然does--,但它們指向 同樣的事情,這是一個,對不對? 值的,但是 它被重新定義。 而在那開始你 說一個是以前的100倍 在B的值是500。 所以這就是不過多是。 50,000。 他們你重新分配,要什麼 在C內存空間is--指針位於c 指向其是。 所以你重新定義為50,000。 ANDI彭:她能 教節對我來說。 下一次,這一切都屬於你。 在這裡。 下面是更多的糖果。 你應該得到糖果的。 聽眾:我幾乎趕上了。 ANDI彭:你幾乎趕上了。 沒問題。 是啊。 但她是完全正確的。 所以,你必須做的事 是that--我想我們 必須遵循的事實 該指針是現在 指向不同的值。 所以value--很抱歉, 的C指針重新瞄準到。 而且使轉向我們所有的數字。 這就是為什麼,當你訪問 值存放在那裡,這是不同的。 這是否有意義? 確定。 酷。 大家好,我才繼續前進? 聽眾:請問the--時,你會 向下在左側列中的行, 並在第一行影響第二次排 然後second--等,它們也all-- ANDI彭:是的。 所以,想像這就是我剛才輸入的代碼 在一個等於b乘以C,明星等於C。 試想一下,我已經 只是跑這個代碼 我沒有打印出什麼 所有這些事情。 如果我只是打印第一 在上面的東西,它會在這裡。 如果以後我跑了所有的 這些代碼行, 這些值的應 是在末端是。 所以,其實我已經寫了一個程序在這裡。 我沒有做過的所有的 乘法。 但就可想而知了。 所以在這裡我只是有一個 程序調用指針。 我會,如果你guys--確定進行放大。 所以,我創建變量a,b和c。 我已經將它們等於 3,4和5,我已經 創建了相應的指針。 然後,在這裡我只是去 打印出那是什麼。 因此,讓我跑了。 難道你們see--廢話。 難道你們看如何, b和c是那些值 但他們的指針是這個巨人 垃圾的價值,我們不關心? 所以,如果我是真正堵塞 在所有的乘法 然後重新打印所有的 這一點,將執行了 到位於底部什麼。 所以,如果你們想要玩 與實際的物理編碼, 你們只需插上所有的。 該代碼將在網上,然後你 值應打印到這事後。 然後你會看到如何指針 地址實際上重新分配。 所以,你會怎麼看 的C地址實際上變成 等於什麼的地址了。 他們會匹配任何 這大量的。 好問題。 大家都沒事吧? 最後一個電話的問題。 確定。 好的。 所以準備讓你的心 吹稍微多一點。 數組實際上只是指針。 這就是它們。 請記住,什麼是字符串? 他們還數組。 那麼,什麼是字符串真的嗎? 他們就像指針到 開始更多的字符一個字符的。 所以,這只是概念開始 建立在彼此的頂部。 所以這是why--您 記得在講座中,大衛, 當他有這樣的比較 對INT字符串媽媽 是什麼,然後 另一個字符串媽媽和你 盡量等同兩人給對方, 他們給你不同的價值觀。 這是因為字符串 本身不值。 所有卻已是內存地址char-- 他們是字符和數組的數組 只是指針。 因此,在本質上,當 大衛comparing-- 那是正確的,如果我抹去這一切? 所以在講課時,大衛· 有媽等於等於媽, 我們這似乎是同一件事。 對嗎? 但是,在下面的計算機 油煙機,實際發生的事情 的是,這串, 所有這些都是是一個數組。 隨著ampersand--或者,對不起, 使用空終止底。 對嗎? 反斜杠0。 錯誤的反斜杠。 因此,所有這些were--所有 這兩個字符串were-- 是四肢大小的數組 媽媽和媽媽的信。 但陣列真的只是 指針在存儲器中的特定位置 告訴你開始你的陣列。 所以在這種情況下,這一切是 只是一些垃圾的價值, 一些隨機指針。 而這一切都被 其他一些垃圾的價值。 遠的不說為0x200。 所以,當您嘗試平等 它們兩彼此 他們評估為false,因為 在addresses--指針 它們were--是不同的。 雖然它是不同的,如果你 試圖比較實際的整數。 就像如果你想compare-- 在最後example-- INT a到b, 他們將評估 要真正為艾略特說 因為他們是 被存儲在該整數 和你正在評估只值。 在這裡,因為字符串數組 和所有的數組的指針, 這就是為什麼他們不 彼此相等。 所以,那種混亂的,該圖形。 但是,讓我們想像。 我們已經創建大小的數組 3從0索引到2-- 0, 1,2為1的值, 2,和3存儲在其中。 所有的陣列真 does--在這裡,我們只 說我創造一個指針 該陣列是 訪問的值 該數組的第一個索引。 所以在這裡這將是0。 對嗎? 大家是否明白如何 即第一行評估? 太好了。 所以,如果你想進行初始化 在那之後的附加價值, 所有我們正在做的是重新分配。 所以0,1,2,1。 所以這個指針,曾經 指著在這裡,我們所做的 正在向下移動。 這就是加1在做什麼。 然後我們就可以把2中。 如果我們希望把3一 之後,我們會刪除該指針, 把3在那裡。 這是否有意義每個人? 是啊。 你有問題嗎? 聽眾:這是[聽不清]有 一個問題,我反正說了吧。 我不認為它實際上是一個 但是 - 在英語的問題,陣列 等於1是有道理的。 我們想,好,第一件事情。 但事情0指數 [聽不清]數組等於0 以指示第一點。 ANDI彭:是的。 所以,其實我在做什麼在這裡 我沒有訪問的第一個索引。 所有我doing--所以首先, 告訴我是什麼星陣呢? 什麼是一個指針之前,一個明星嗎? 聽眾:它表示一個指針。 那你聲明的指針。 它de-- ANDI彭:它解引用此裝置 它會與實際獲取的價值。 對嗎? 所以在這種情況下,要得到 這裡,並設置為1的值。 是嗎? 所以我不actually--我不 真正關心的這個指標, 我做的僅僅是迭代下降 通過移動指針我向下排列。 然後最終我 要阻止它,對嗎? 而且我停止方式 是我擊球的時候,在案件 一個字符串,一個空終止的。 我知道,哦,如果我打一個back--如果我看到 反斜線0,我知道我做過這個 我知道我可以只 停止迭代通過。 非常好的問題。 我們真的會走的更遠 在深入這個下週 因為一塊,那將 涉及到很多指針的使用。 但只知道,現在, 這只是一個不同的緩慢 - 這只是一種不同的方式進行 電腦寫,從本質上講, 我們一直在做的。 就像大衛說 講課的樣子,我們 訪問數組只是做 陣列0,托架0,如果我們只是 想訪問的第一個值。 所有計算機的工作正在轉向 那成和迭代本身。 因此,我們把它叫做句法 糖這只是 的話說用戶友好的一個奇特的方式 我們如何知道如何編程。 但是電腦 下面,它在做什麼, 它實際上只是有 指針多數民眾贊成調整。 但是,我們寫的方式, 因為它更容易為我們 考慮事情的角度 盒和如何移動向下拖曳, 是由具有括號。 對不起,這是真的, 真正但是 - 不好呀。 聽眾:那麼,如何會 你比較兩個字符串 看它們是否彼此相等的? ANDI彭:大衛寫道: 這一計劃講座 所以我只是要去 在快速並簡單。 你會做這件事的方法 是,你實際上會 需要去比較 addresses--或值 從指針獲得。 所以請記住,你怎麼了 這裡獲得的價值? 我不關心地址在這裡。 我如何真正得到的 任何的價值在這裡? 聽眾:[聽不清]。 ANDI鵬:沒錯。 所以,你比較的明星 這裡與這裡的明星。 那些是相等的。 然後你去。 是這裡的明星, 明星在這裡一樣的嗎? 確定。 他們是平等的。 而你只是保持下去 直到你擊中雙方的結束。 如果所有的人都是平等的,那麼 你知道你的字符串是相等的。 與C實際上有一個 功能書面叫 字符串比較這其實只是 這是否給你,讓你不“ 要自己寫。 是嗎? 聽眾:我想在講座 當我們做了比較。 我們並不真正需要一個 如pi櫃檯,對不對? ANDI彭:你不 因為我們真的不關心 我們已經多少盒通過迭代。 我們所關心的是,我們要 繼續下去,直到我知道停下來。 你知道停止的時候 有某種指示 你是在一個空終止。 是啊。 So-- 聽眾:[聽不清]。 ANDI彭:是的。 因此,在比較的情況下 串,我真的不 關心多少個字母 are--我需要比較 如果他們是真的還是假的,如果 它們彼此相等。 我不在乎多少個字母 在他們每個人的,對吧? 我只關心這個 與此和所述一個匹配 火柴和之後的一個接 比賽一路上揚,直到結束。 對嗎? 這是否有意義? 所以,我真的不關心有多少信件, 我只關心,所有的字母 匹配。 是啊。 確定。 我可以從這個感動嗎? 太好了。 我們正在運行有點短上 時間,所以我將只允許你 球員簡要回顧一下這個。 運行到你的ID,如果 你們是好奇。 而且你們可以看到什麼 這將被打印出。 確定。 所以的東西,我們也將觸及一個 位指針運算的想法。 其中,所有的都好,就是 而不是調整 的所存儲的值 在您的指針的地址, 它只是實際改變 地址本身。 所以,如果你作為人的通緝 手動調整指針, 你會做到這一點的方法就是 做指針的n倍的大小。 對嗎? 因此,一個int。 一個int--多少字節 在內存中是一個int? 這是四,對不對? 所以,如果我知道,我把所有的數組 整數,我希望它指向一個 後來,我知道,我只是要 移動我的指針下四個字節,對不對? 因此n次的大小 的指針字節 然而,多少字節,你只是 要通過移動鼠標指針向下。 因此,例如,如果我們有一個數組 整數,第一個,我們只能說, 被存儲為0x00。 你知道下一次將是在 0×04,因為這四個字節後面。 而在這之後的人會 為0x08等等等等。 所以,伙計們,一起來看看。 所有你在這裡所做的是 你有一個指針ÿ 而你還說你 內存,讓您可以向下移動 的存儲器塊進行分配。 樣的一個更高層次的概念。 你們將不再需要 要知道,本週, 但是這一切都在做那裡。 確定。 另一個笑話時間。 兩串走進一間酒吧。 一個人說,我想一個朗姆酒 可樂垃圾值。 另一個人說,你得原諒 我的朋友,他沒有空值終止。 你們得到它。 抱歉。 這就是我如何保持自己 當我預習的節會 是我插入了幾個笑話幻燈片。 反正。 確定。 之前,我謹on-- 因此,從本質上講,我們已經 涵蓋了所有的概念 有關指針的問題。 然後,我們將talk--移動 更多的,說說為什麼這很重要 以及如何裝配到 理念的內存管理。 但在此之前我繼續前進, 有沒有人有問題 關於指針使用,這是​​怎麼回事 當你創建的指針上, 如何引用各 另外,它們是怎樣被提領? 有關的任何問題 之前,我繼續前進? 確定。 太好了。 因此,這給我們帶來了這個 較大的更高層次的概念 內存管理的全過程。 因此,基本上,在 您的計算機,有 兩種基本類型的存儲器或 在其中的存儲區域被存儲。 您這裡有什麼所謂 堆和你在這兒 什麼叫做堆棧。 而且我們要談談 棧首先是因為它是 更finagley一個你 有一種概念 明白這是怎麼回事。 因此,所有的堆疊is--想到的 它作為存儲器中的物理棧 那就是你有一個內存塊 多數民眾贊成預留程序 而它的運行。 這是在哪裡,基本上,所有的 您的局部變量的存儲位置。 所以這只是一個放大 在那一疊照片。 堆棧那裡,我 只是放大了一點。 因此,基本上,在堆疊有 在你的程序了一堆功能。 所以,就讓我們回去 到本週二的例子 在這裡,我們有我們的主要功能 以及一個立方體功能 在這裡我們試圖建立一個函數, cubed--是把參數作為輸入, 立方他們返回 他們回到主。 這樣的方式,一個儲存在存儲器 是,你有你的主要功能 這裡在底部。 然後用每個附加功能 您致電,並添加最重要的是, 內存只是堆在上面。 把它看成是一個物理堆疊。 所以,你有在座的各位主要 你的主要函數的變量, 一切是怎麼回事,存儲。 然後當你打電話 立方體,它會和它 創建的所有副本 參數和它們存儲 上面在不同的地方。 所以,我們為什麼要在乎? 我們關心的原因是,我們不能只 使用的參數這裡 - 變量 這裡 - 我們改變它們,我們預計 他們還可以在這裡改變了,對不對? 的想法是,他們保存的 在存儲器不同的地方 這樣一來,當你訪問不同 功能,你的想法正在發生的事情 實際上並沒有發生,因為 存儲器位未互連。 這樣一來,問題是真的 重要的是我們那種理解 是,如果,當我們運行 程序,函數的大小 堆棧frame--這樣的身體,怎麼 多少內存?我們給它? 也許這是一個巨大的功能,所以我們 必須給它那麼多的內存。 但如果是小的,我們會 需要一個小點點。 這樣的想法是,我們正在運行時 一個程序,函數的大小 取決於多少 變量和變量的類型 我們想給它。 但是,如果數量 variables--及其大小, 多數民眾贊成堅決不 通過你的編碼器,但 是由實際確定的 用戶程序的。 所以,如果我想創建一個函數 這把字符串從用戶, 但我真的不知道有多大 這些字符串是,這對我來說很難 以配發的具體 所需的內存量。 對嗎? 因為如果這個function--如果 該用戶輸入一個巨大的字符串, 它會創建一個錯誤 什麼叫基本 堆棧溢出,你超越 你有內存的邊界。 所以,那麼我們該怎麼辦? 如果我們不能創造這個巨人 堆疊,可以節省一切, 我們怎麼做才能解決這個問題? 因此,我們要繼續前進和談話 關於此第二類型的存儲器 然後我們可以談論如何 我們可以使用兩者結合起來 要解決這個問題。 所以,現在我們要動起來 到的存儲器的不同部分 在我們的電腦。 這就是所謂的堆。 因此,所有的堆是一個游泳池 可用內存 可動態分配。 這樣,可以改變,同時 你的程序正在運行。 等的區域 未使用的內存,可以 是allowed--,可以是 分配與功能 所謂的malloc或內存分配。 因此,本質上,當 你正在運行的程序, 你可以動態創建的內存 堆和使用,所有到這裡。 因此然後,所有的功能 在這裡可以訪問堆。 所以malloc的,這種想法,大衛· 一種快速,簡單地掩蓋 在講座中,僅僅是一種方式, 你控制你的記憶。 就像,當你剛剛創建 堆疊功能,當你剛 讓您的主要功能 與您的隨機函數, 你認為他們是孩子,僅僅 逃跑的時候,你已經做完了他們。 他們真的壞事兒。 創建它們,你 教給他們的東西, 然後當你想 再次訪問他們,他們是 不存在,因為你的 內存剛剛跑掉了。 但malloc或堆,是一種 具有較好的兒童,在那裡 一種可以創建 他們,將它們分配值, 使用them--聽起來真 bad--使用它們不過你想要的, 但能夠控制 他們,然後釋放內存 每當你需要他們。 那麼,當你和你做 功能,孩子們回來找你 你仍然有數據存在。 因此,我們的malloc,或創建方式, 內存是由函數void明星 malloc的大小以字節為單位。 所以,這只是原型 為什麼我們這樣做。 因此,一個例子就是我們創建一個指針 類型int-- INT星級pointer--平等 整型malloc的大小。 那麼,為什麼我們做大小的原因 的,而不是只是一個number-- 因為大家都知道, 一個int四個字節, right--而是一個int是只有四 字節在某些操作系統。 作為這個想法對我們來說 程序員是我們 要創建代碼,可以 運行中的所有計算機,而不僅僅是 我們簡單的電腦。 所以這就是為什麼我們喜歡用 的大小,而不是只數4。 這是否有意義給大家? 因此,大小of--所有它是一個C 函數或運算符 告訴你多少字節的內存呢 某種類型的變量佔用。 所以在這種情況下,一個int的尺寸為四。 四個字節。 和malloc是要釋放 在你的堆四個字節, 然後你就可以在你的主要用途 功能,以便能夠存儲存儲器。 是每個人都在說清楚這麼遠嗎? 是嗎? 聽眾:我很清楚,但 剛剛結束clear-- ANDI彭:OK。 完全罰款。 聽眾:--size是[聽不清] 實際上可以[聽不清] 它會怎麼做的 我們希望它的東西。 這不是一些偽代碼。 ANDI彭:沒有。 聽眾:這就像一個真正件事 - ANDI彭:這是真正的代碼。 聽眾: - 我們可以使用它。 這是實際的。 酷。 ANDI彭:尺寸自帶C. 聽眾:那讓我的生活更幸福。 ANDI彭:是的。 所以,如果你是一個懶惰的程序員 有點像我,有時, 我不喜歡記憶 什麼尺寸的一個int 是的,我不喜歡記憶 有一個浮動的大小。 只是尺寸告訴你什麼 這是,這是一個容易得多。 好的。 因此,一個重要的事情 那你們都想要 要記住,當你 使用malloc是您永遠 必須進行檢查,看它是否為空。 所以,就像我說的,回 該照片的堆。 堆就是這個巨人 內存堆棧,你有。 而你要能夠把塊 從它的內存並使用它,對嗎? 但是,如果你沒有 在這堆更多的內存? 如果我已經用什麼都 它和我嘗試對malloc更多? 不存在。 嗯,這就是為什麼你 要得到一個錯誤。 你會賽格故障。你會 有段錯誤,你 嘗試訪問的東西都是不存在的。 這樣一來,這樣我們做 那和方式,我們 防止的是,我們檢查 以查看是否指針的空。 所以,如果我是對malloc的東西 我沒有更多的內存, 這將打印,因為一個錯誤 指針回到你只是空。 這樣一來,這樣我們做this-- 這下好了設計, 只是記住this--是任何 一次嘗試的malloc什麼, 你將需要 檢查,看它是否是空。 因為每當你嘗試 從堆中獲取內存, 你總是要做出 確保您有記憶。 這就是它。 因此,相當多這三個 行代碼,熟記。 每次你的malloc,撲通一聲他們進來。 你會需要它們。 因為我向你保證,我們將 測試你的情況,你的電腦 會爆炸,因為你 要嘗試存取存儲器的 不存在,事情將要 偶們這不會是好的。 因此,只要鑽取到你的大腦。 malloc的,無效。 好。 好的。 那麼這生子; 發生了什麼問題 我們正在使用的內存後完成。 因為整個的想法 具有的malloc是 我們有這樣的堆,我們可以採取 從內存中,然後我們可以使用它。 對嗎? 然後,我們要記住 在這之後,我們用它做, 那麼我們就可以釋放它。 隨它去吧。 我們可以讓他走了。 要不然你也將洩漏 內存和更壞的事情會發生。 從本質上講,只要 你觸摸存儲器, 如果不好的事情會發生 不正確地做事情。 所以,你必須檢查,首先, 如果您有可用的存儲空間。 然後就大功告成了之後,你要 釋放它,讓你的操作系統 把它收回。 所以我們這樣做的方式就是這樣 功能,無空隙,指針 以內存堆。 所以這個例子是自由指針。 這是很容易,操作簡單, 不要忘記它。 因此,檢查,看它是否為null,免費的。 每個人都好? 所以再次,代碼,你們 可以種迅速採取了一眼。 我知道這是一個很多新的語法和 它的所有權利,如果你喜歡啊, 這是什麼意思了嗎? 無後顧之憂。 所有這一切都意味著要被顯示 一個動作,如何將所有這些東西 可以一起使用。 所以這是放在一起 就像一群過去 幻燈片,我們只是去 通過到一個程序。 聽眾:在某種程度上 我們可以actually-- ANDI彭:在一個方式, 我們實際上可以使用。 你可以放下了到您的ID, 你可以運行它,它會工作。 聽眾:OK。 所以這是真的嗎? ANDI彭:這是真實的。 是啊。 我盡量做到讓 字體是不同的,因此 每當我鍵入真實的 代碼中的字體是字體代碼 而我記的代碼是不同的,但 我不知道是否實際工作。 聽眾:第 我想that-- ANDI彭:OK。 聽眾:--sometimes [聽不清]和我 像,這將是真的很可愛 如果它實際上是一個有用的事 但它不是一個有用的東西。 我想,這是一個有用的事情。 ANDI彭:OK。 是啊。 我會通過沿。 要像大衛,孩子真的 傷心的時候你寫假的代碼。 好的。 是嗎? 聽眾:所以這裡的PTR 實際上不是一個指針, 它的內存塊? ANDI彭:所以你在說什麼 第一行或一跌嗎? 你說的是這個嗎? 聽眾:在PTR是 in--不同的東西 ANDI彭:嗯,所以在這裡 我所實際doing--, 讓我們只經過這裡。 這種關係在 所有很好的概念。 所以在這裡,我們有INT明星PTR。 所以詮釋的指針,這就是 我們實際上創建 一個指針指向一個整數。 那麼,它會指向一個整數。 而且我們要malloc或 給它,足夠的內存分配 存儲的整數。 在這種情況下,這樣的四個字節。 然後如果這等於null--平等 等於null--我們要打印。 哦,你因為一個錯誤 你出的內存,對不對? 否則,返回之一, 這只是告訴你的程序 你已經有了一個錯誤。 然後,如果你這樣做 有記憶,它的 要存儲什麼讓 INT讓你進入的位置 並將其設置為指針的值。 因此,它實際上會 從物理上刪除該值 並把一切得到int返回。 然後,你要 無論他們進入打印。 聽眾:這就是 要在堆? ANDI彭:這是怎麼回事 將在堆。 聽眾:所以這 將是可訪問。 ANDI鵬:沒錯。 美觀大方。 好。 聽眾:所以當我們釋放PTR在這個 最後一步,我們正在釋放指針 或者我們正在釋放塊? ANDI彭:是的。 因此,我們正在釋放pointer-- 好了,釋放的內存塊。 所以唯一的辦法,我們甚至可以訪問 存儲器是由具有指針。 如果你沒有指針,你 喜歡的哦,我不知道它在哪裡, 對不對? 如果你釋放它的話,你基本上 釋放了整個街區。 那麼你的計算機知道,哦, 沒有什麼可用的在這裡, 我可以把垃圾 值回了一遍。 聽眾:所以整數確實存在的呢? ANDI彭:不要整數存在嗎? 抱歉。 你能否重新表述您的問題嗎? 聽眾:我的意思是,你釋放後, 指針,整數,你得到的, 將仍然存在? ANDI彭:不,不會。 或者至少它會存在於你 你的電腦做之前,內存 不管它,但有 沒辦法讓你拿到。 因為你釋放的指針。 你不知道它在哪裡了。 是啊。 我打算在這裡移動。 唷。 因此,我們通過大量的概念的 內存管理困難 我們正要 基本上花 5,十幾分鐘去 在語法的事情, 將是可用的,並為你們有用, 但沒有太概念了那裡。 確定。 因此,我們這裡完全改變齒輪。 內存管理,很難。 指針,很難。是。 這是真的,真的很難。 完全罰款。 這就是為什麼你的作品是 將是真的很難。 但是,如果你去做 的事情,我們是 應該做的事情,使 確保一切都為空, 一定要檢查,如果事情是 空,一定要釋放內存, 確保一切都沒有 漏水,你會好。 你將被設置。 好的。 所以,我們要進入這個 重定向的全新的概念。 而之前那麼現在,在 我們已經主要途徑 與被交互我們 程序是通過標準輸入 和標準輸出。 對嗎? 我們為用戶輸入 東西和計算機 吐回給我們的終端。 但也有其他 如何讓我們互動 與計算機與我們的 這不只是我的計劃 物理打字的東西 在我的時候提示我。 而我們做到這一點的方法是 通過大於胡蘿蔔 和管道符號。 因此,我們也可以讀取和 編寫使用的文件。 所以我們這樣做的方式是 大於胡蘿蔔,所有正在做 正在寫什麼你 文件具有到一個單獨的文件中。 因此,舉例來說,如果我 想跑的hello world 我想輸出到 保存在另一個文件 而不是僅僅打印出來給我,我 可以只比胡蘿蔔做的更大, output.txt的。 因此,所有這一切做的是 我hello.world程序, 不管其輸出是,它的 保存在一個名為output.txt的文件。 所以,大衛做了的方式 .csv格式與學生的名字, 它是相同的,你們可以做的。 這有什麼特別 有用這裡有更大 than--兩個大於胡蘿蔔 跡象,您可以追加到一個輸出 文件,這意味著你 只需添加在它之上。 你可以只是不斷增加 每增加一點output.txt的 你正在做的事情。 或者,如果你開始進入更多 複雜的程序,兩個較大 比胡蘿蔔,只是打印 出了錯誤信息。 所以說,你有一個巨大的 錯誤消息量 和你想讀 通過所有這些,你的 不希望有滾動 通過你的終端, 可以真正地做到 大於output.txt的 並且它要保存 所有的錯誤 在一個文件名為output.txt的那 你可以通過閱讀。 聽眾:哪裡是文​​本文件保存? ANDI彭:它保存在同一 目錄下,你的程序。 所以,你只要回去看看吧。 而同樣的事情,我們 可以輸入做的是 我們可以採取實際 一些文件的內容 我們可以輸入該到我們的程序。 因此,而不是做命令 在那裡你身體行參數 必須輸入事 每一次,你 可實際上只是有一個名為 input.txt的,只是把它所有的研究。 然後通過管道是特別爽,因為 它可以採取一個節目的輸出 並把它作為輸入 的另一個程序。 因此,例如,在你的球員“的Vigenere, 有這行代碼,你 球員正在運行,你也許也許 真的不知道這是什麼doing-- 這./generate 1000年管./42。 對嗎? 因此,所有的在做,如果我們只是 看看這一步一步, 該./generate,這意味著我 運行我的程序產生。 即採取在1000在它的輸入端。 所以我想生成1000隨機 數字和我要去管that-- 或者我會用that--輸出 輸入我的程序調用的發現。 而且我會盡量找42出 從這些1000生成的數字 數字。 這是否行代碼,使 有意義的其他人? 所以在這種方式,我們正在保存 我們一噸的步驟。 我們沒有運行,保存, 該文件,然後把它放進發現。 我們可以做這一切在同一行。 所以,無論是生成輸出, 墜落它右後衛找到。 是嗎? 聽眾:而在指揮方面 行參數,是that--那 三個命令行參數? 它的產生,find--沒有,four-- 產生,1000,查找和42? 或者是the-- ANDI彭:這樣的管道並沒有真正 算作一個命令行參數 因為編譯器或 終端知道該管道, 哦,我知道我必須看前 管道,因為這是我的輸出 我必須照顧 管,因為這是我的意見。 所以它知道that--的 ./generate和1000, 這些都是那麼兩個命令參數 只是為第一程序。 然後./find 42兩個命令 行參數的第二個項目。 是啊。 每個人都好就這個? 因此,只要真正的快,做什麼 這三行代碼呢? 很簡單。 任何人想告訴我 什麼樣的第一行呢? 聽眾:[聽不清]。 ANDI彭:把它看成just-- 什麼是大於胡蘿蔔嗎? 聽眾:它把東西 到下一行。 ANDI彭:那麼,什麼是 那相反? 聽眾:它把下一個 事成的第一件事情。 ANDI彭:是的。 因此,所有這一切做的是你 運行程序.hello-- 您正在運行一個名為你好程序。 你打算給它 稱為輸入input.txt的。 對嗎? 因為把它看作只是 物理進入打招呼。 然後,你要保存 在文件輸出名為output.txt的。 如何下聯? 想告訴我什麼 第二行呢? 聽眾:[聽不清]。 ANDI彭:對不起。 再說了。 艾略特。 聽眾:所以它把​​一個 數字到查找列表。 ANDI彭:是的。 所以找到,請記住,在 為了運行找到你 需要知道你正在尋找。 所以所有的它做 這裡要說的是它給你 預先分配的一組的 數字,然後找到是怎麼回事 以搜索那些為42的數目。 然後15。 請記住,你們跑這 當你測試你的代碼。 現在你明白這是什麼做? 聽眾:它的投入 該組指令 通過三通過向[聽不清] 三,獲得the--贏得比賽。 ANDI彭:是的。 聽眾:通過輸入那些 指令到程序中。 ANDI彭:差不多。 所以波浪CS50 / pset3 / 3x3的,所有的 在做的是,我們創建了一個文本 文件把所有的 遊戲準備好你們。 所以,你的遊戲玩,你just-- 我們只是把那到你的程序。 因此,我們已經創造了這個 板,然後我們 把該板到你的程序 跑,並創造了三個瓷磚 三。 這就是它在做什麼。 所以實際上也存在神奇 怎麼回事幕後 那你們沒 程序,我們編程。 但是,現在你們明白為什麼 我們這樣做,所以這一切都很好。 好的。 因此,儘管重定向是一個非常 有用的,C具有普遍的機制 用於讀取和寫入 它自己的文件。 沒有什麼概念 困難在這裡,所以我 剛準備要經過 真的,真的很快。 所有這一些記憶 並確保你們 語法是正確使用它。 我們會做到這一點的方法是 創建的參考文件, 我們會打開這個文件,然後我們 會做所有的閱讀和寫作 然後關閉該文件。 當你們的事 要記住的是 雖然這樣做,是因為 我們正在關閉和打開文件, 所有這些命令包括 在standard--標準I / O 庫。 所以一定要確保每當你 這樣做,你已經included-- #included--標準I / O點小時。 所以,真正的快。 第一步,你要創建 的引用,該文件。 而現在,我們所做的指針,你 你們能告訴我這是什麼行代碼 在做什麼。 對嗎? 所有這一切它做的是創造一個 指針命名的文件類型的文件。 因為你知道這是怎麼回事 指向一個文件,你 要打開該文件。 那麼你˚Fopen--所有 它的作用是打開文件。 這是文件名。 而且有三件事情可以做。 你可以讀,寫或追加。 最普遍,你們 將讀取或寫入 因為你要么將是 輸入文件或輸出之一。 所以幾乎r和w分別在兩個 你會使用最多的事。 因此,在這種情況下,所有我所做的就是 創建一個指向一個名為文件。 我打開它,我reading--我 打開此文件名為file.txt的 而我讀它。 這就是我正在做的這一點。 然後,這些都只是在功能 你可以看不同的東西 或寫不同的東西 或者跳到不同的地方 在那裡,你想看看。 所有這些都是在網上。 所有這些,你可以只是谷歌。 無需記住它們。 他們只是在那裡, 一次性供您使用 如果您想為 能夠使用它們。 所以,如果我想剛才讀 在一個字符的時間, 我會做文件龜etc。 或者,如果我想讀取一行 文本的時間,我會做與fgets。 等等,等等。 所有這些只是做不同 你們的事情可以使用。 然後最後,經過我 做讀取或寫入, 我只是要FCLOSE該文件。 請記住,這是其一 那些,記住,請 這樣做,否則您的文件 是行不通的。 之前,請務必打開一個文件 閱讀或閱讀, 你必須始終 關閉它,如果你打開它。 同樣的事情與記憶,對不對? 你必須始終以 內存和釋放它。 在這裡,你必須始終打開 試圖讀取它之前的文件 而你總是要 關閉你打開它之後。 所以,這也是在網上。 我要你挑戰傢伙 那種寫一個程序,打印 hello.world到一個文件。 這真的很簡單。 它本質上只是涉及 的代碼的幾行 這只是以前寫的。 你打算把他們 一起寫的。 因此,一些重要的事情要記住 而你們正試圖利用這一點。 如果這一切都是非常有用的 本週你的PSET, 是FOPEN創建一個文件指針。 這不是真正的物理文件。 所有它指向該 文件要打開。 而你從本質上講,只要 您正在使用的任何其他職能 像FREAD和FWRITE 或龜etc或與fgets,是 那你只是路過解決此 指針的所有這些功能。 所以你沒有真正採取這一 文件並使用它為你的功能, 你只是把指針 並把它這些功能 這樣就可以使用。 如果你忘記關閉 您在使用它後的文件, 你的程序會出現內存洩漏。 從本質上講,所有的手段 是不好的事情會發生 和你的程序將 無法正常工作。 等等PSET中 一開始,我覺得 有一個短的,在那裡他explained-- 內特explained--什麼Valgrind的了。 所有Valgrind是一個方法可以讓你 確保你不會洩漏內存。 所以,你們要進行 確保你看,短期 因為這說明它 真的很好會發生什麼。 確定。 於是我通過去真的, 真的很快,因為我​​真的 想要去談論 處理器集之前,你們離開。 有沒有人有問題的概念? 大多都是這只是語法 你可以用它來讀取或寫入文件。 最後,大家的喜愛。 我們要談的pset的現在。 因此,舉手表決,多少 你們看過規範這個星期? 噢,那是一半。 這是很好的。 因此,這實際上是一個真正的, 真正有趣的PSET的意義 你覺得自己像一個 偵探,因為你 做所有這些非常酷的事情 你不知道,你可以做 但現在它真的很酷 你可以做他們。 它實際上是一個很大 簡單的比你們想像。 所以基本半部 這個程序是你 要下載源代碼或 發行代碼寫的我們。 而你將有一個文件夾 所謂的BMP和其他文件夾 所謂的JPG。 在您的BMP,你 將有三個方案。 其中之一是已經為你寫的。 所以CSV模式中有效是一個程序 我們已經寫 對於你,你要去下載。 所有這些都需要輸入一張圖片 並使得它的一個副本輸出。 這是所有的文件在做什麼。 但是,你想要做什麼 whodunit--所以你們有多少人 你們還記得在小學五年級或maybe-- 你younger--也許三年級, 當你們有秘密消息, 你不得不把一張紙了它 解碼消息? 是嗎? 所以,這就是我們正在做的 但這次的計算機。 因此,我們已經給你這個可愛的形象。 看起來不像 什麼,但下方 這是一個線索,會幫助你 與回答這個問題,我們問你。 從本質上講,你想要什麼 要做的就是輸入該文件, 圍繞調整一些東西, 也許調整顏色, 轉移的事情,所以,無論 該消息是能安然度過。 所以裡面有隱藏 像素和信息 如果你正確地編寫代碼 是要解碼,並告訴你 這是什麼線索。 所以一些有用的提示如何 你會去接近這一點。 你真的想了解 自己與文件I / O 因為我們從閱讀 文件和寫入文件。 對嗎? 所以,每當我們做 即,涉及 文件I / O。你會 有熟悉 有,你是怎麼打開的圖片文件? 你怎麼寫入文件的圖片? 你怎麼做所有這些事情? 這將是非常有用的。 其次,你怎麼樣 要能夠改變 該清理這幅畫的顏色? 它可能會涉及到 調整你的像素或RGB值 地方在那裡,本質上。 有沒有正確的方式 只要解決這個你 can--只要你可以種 調整的那些像素,使其 看起來像你關心的東西。 這就是我們所關心的為好。 因此,有很多方法可以做到這一點。 剛玩它,直到 你會得到一些作品。 而且你會很 代碼驚奇地發現幾行 你需要真正做到這一點。 我說的是像三 代碼總行數 你需要寫 為了做到這一點。 所以,如果你發現自己 寫40,30行代碼, 你可能就錯了。 所有你需要做的是一種 玩的顏色 看看該怎麼做了。 於是我們進入了一點 到的一個問題更難。 在這裡,我們有調整 我們問你在哪裡 用於:我們給你輸入 一張圖片,你的大小調整 這個圖片弄成 或大或小一點 這取決於我們給你的尺寸。 所以請記住講座 大衛很快 瞥了一眼信息如何 通過您的計算機上檢測到 意味著它是一個類型的文件。 所以一個Word文件中有特殊的 前面那個字符 告訴你的電腦是一個Word文件。 同樣的事情與JPEG格式。 在這種情況下,我們將 給你一個JPEG文件。 我們所知道的是,JPEG 文件是一個圖片,對吧? 但電腦與眾不同之 它非常具體的方式。 因此,在開始時 任何JPEG文件,你 將有什麼所謂的位圖 信息報頭和位圖文件頭。 所有這些都為 不同的數據 告訴您的計算機,嘿嘿, 聽好了,一個JPEG文件上來 而這些都是尺寸或 該JPEG的特點。 所以你們真的想知道 哪些信息內部存儲 這些標題和 什麼是它們的大小。 當你運行,因為 通過你們的節目, 你會想 跳過這一數額。 對嗎? 因為你不關心 有關修改標題, 你關心的修改有什麼後。 對嗎? 所以一定要確保你們知道 這些東西有多大。 其次,在開始之前 試圖調整你的形象, 你可能會想 保存原始的尺寸。 對嗎? 因為如果我告訴你,這幅畫 是100像素乘以100像素, 我想你做 這四次較大, 你知道你必須 乘以4的尺寸。 所以,你想要一個輸出文件 400×400像素,例如。 因此,它是非常有用的,你們要 保存原始的尺寸。 再後來,經過 你完成了調整, 你可以寫新的報頭與 調整後的新維度。 而方式,你身體 可以創建在大像素 是,你可以寫 新RGB--記得,RGB, 所有代表的是紅,綠, 和blue--像素的輸出文件。 而你會想 有不同量的什麼 我們稱之為填充。 所有的填充是有空間 之前和圖片後, 告訴your--基本上是 告訴你的圖片有多大它 應佔用。 這是很抽象了很多 你,如果你還沒有讀過pset的規範, 但它的將是 因為當非常有用 你實際上讀通過它。 你喜歡的哦,是啊,這是有道理的。 為什麼我要這麼做? 有道理。 最後,這可能是一個 最令人沮喪的程序 曾經只是因為你不能 告訴我們,如果它的工作與否。 所有這些計劃,恢復,是 做的是,如果正常運行, 它應該能突然 回收50%的圖像, 失去了我們的硬盤驅動器上。 所以,這個程序問題 是,你不能真正測試 因為無論你恢復 他們或者你沒有。 所以那種你只要 必須發揮與它周圍, 如果你的程序是 正常工作,你會 突然看到,在 您的目錄你已經 得到了一個巨大的量 照片是現在。 所以,我怎麼會接近 這個問題,我們 要給你什麼 被稱為card.raw文件。 從本質上講,這是 只是損壞的文件 與所有的圖片存儲在該 你將需要從恢復。 所以,你可能會想 輸入您的card.raw,或打開, 您card.raw文件和你 將要處理 它能夠存儲JPEG文件。 因此,我將通過跟踪和存儲啟動 每個單獨的JPEG,你找到它。 你不會單獨所有 突然只創建50個JPEG文件。 你會想保留 跟踪你打開多少。 然後你要 要確保,當你 寫入buffer--你們 會知道我在說什麼 一旦你讀了spec--要 請確保您使用的是無符號 字符緩衝區。 然後你要問 你自己的問題, 多少字節是在一個 CF--是在一個卡文件? 這就是你要多少 想讀入您的緩衝區。 你會希望確保 兩個對齊因為你 不會有隨機存儲器洩漏。 你知道到底有多少 字節,你需要多少 字節,你希望他們有。 然後最後,你要 使用一種稱為函數sprint-- ■打印F--生成自定義文件 名稱為每一個新的JPEG,你覺得。 在創建因此和 發現JPEG文件在你的卡, 你會想 存儲它們並將它們命名。 對嗎? 所以,你要 要使用該功能 創建的名稱 可以存儲所有的JPEG文件。 最後,不要忘記關閉 每個JPEG圖像後,你就大功告成了。 因為你在做什麼 要做的就是你 將可能有 某種循環的那 通過您的所有JPEG文件的迭代。 你會寫一個JPEG 並改名為你找到它。 但是,就大功告成後, 與每一個JPEG, 你需要關閉它,你就可以開始 過去,在移動到下一個圖像。 所以東西是 真的很有趣,我們喜歡做的事, 因為這是這樣一個奇怪的問題集 也是一個古怪令人滿意問題 集,就是所有的圖片我們 對你,如果你正確恢復, 所有的圖片是圖片 你的精彩教學人員,無論是 哈佛,在這裡 - 這裡在耶魯大學。 如果你碰巧 收回所有這些圖片 並確定人員 在這些會員卡, 並採取selfies與我們聯繫,如果 你會發現我們身邊的校園, 對於每一張照片你提交給我們,我們將 給你的Dropbox空間的千兆字節。 因此,讓我們做數學題在這裡。 如果有50張圖片和 50教學工作人員, 如果你碰巧發現所有50 我們,這是50千兆字節的Dropbox的, 基本上,我們會給予你們。 因此,一些額外的附加激勵 如果你們不只是 關心恢復丟失的圖像。 還有一些額外的獎勵。 這是一個有趣的問題集。 這真的是。 這是一種令人沮喪,但隨後 當你意識到變得更有趣, 哇,它的工作,現在我 具有所有的這些照片 我剛剛被自己創建的。 在PSET有任何疑問? 對於任何人誰的已經 開始,如果您有任何疑問, 我會在這裡過了幾分鐘 一節,如果你想和我說話。 幹得好,伙計們。 我很抱歉,我的信息 傾倒在你們。 指針是真的,真的 具有挑戰性和令人沮喪的。 而且我真的很高興, 你們一直伴隨著我。 我們將討論更深入 關於下週 當我們開始做哈希表和 更多的功能,讓他們參與。 是啊。 因此,如果任何人有任何 的問題,我就在附近。 感謝您的到來,並採取更多 糖果,因為有更多的糖果。 酷。