>> [音樂播放]
DAVID馬蘭：好的。
這是CS50，這 是2週結束。
我很抱歉，我不能 那裡與你們的今天，
但你在非常良好的手中。
請允許我介紹 CS50自己的羅布·鮑登。
羅伯BOWDEN：當然，那 我們必須做出這樣的事實樂趣
他給我們送來一個垂直 視頻和顯示此。
>> [視頻回放]
>> [音樂播放]
>> [腳步聲]
>> - 此視頻也沒有 要看看這種方式。
這本來是可以避免的。
說不垂直視頻。
>> - 垂直視頻發生在你 把你的相機走錯了路。
您的視頻將結束 看起來像廢話。
>> - [咕嚕咕嚕]
>> - 有越來越多的人沉迷 每天做垂直視頻。
它不開裂或沒有， 但它仍然是非常糟糕的。
有兩種不同類型的 人誰是患有VVS。
第一組對待 視頻拍攝他們的照片一樣。
他們並不意味著任何傷害。
他們只是不明白， 而你可以把圖片，
你不能真正把一個視頻。
>> [CRASH]
>> - [猴聲音]
>> -The另一組是人 誰不給[嗶]。
>> - 垂直視頻綜合症是危險的。
動態影像有 一貫水平。
電視水平。
電腦屏幕是水平的。
群眾的眼睛是水平的。
我們不建 觀看垂直視頻。
>> - 我愛垂直視頻。
>> -Nobody在乎你。
>> - 如果這個問題的 任其發展，你太
將開始顯示四個視頻 在一次只是為了節省帶寬。
>> -Letterboxed垂直視頻會 是一個郵票大小。
>> - 和它會到處蔓延。
電影屏幕有 一貫水平。
如果垂直視頻成為 接受，電影院
必須是又高又瘦。
>> - 和所有的電影院會 必須讓拆掉重建。
而到了時候，他們被重建， 米拉庫尼斯將是又老又醜。
>> -Birds會撞到他們死。
>> -We'll都得到僵 脖子是仰視。
>> - 和沒有人會坐在 前排再次。
>> -George盧卡斯將重新發布之星 戰爭again--瘦版。
>> - 我從來沒有真正能夠告訴 我想告訴的故事。
這是一個偉大的機會，我 試驗的新技術。
>> -You're一個混蛋。
>> -Every時間移動裝置是用來 錄製視頻，誘惑是存在的。
只是說沒有。
說不喬治·盧卡斯。
說不老蜜拉庫妮絲。
說不垂直視頻。
>> -and如果你看到有人做出來，說， “你沒有拍攝的正確的虛！”
>> [音樂播放]
>> [結束播放]
>> [掌聲]
>> [AUDIO OUT]
羅伯BOWDEN：--simple 加密的形式，
這基本上是加密 和解密的秘密信息。
所以在這裡我們有一個非常簡單的玩具。
和想法是外環 旋轉內圈周圍。
你可以看到，也許如果我放大 在，that--很難看到的。
但是，等時，數 1--好，感動。
>> 數字1映射到信 X，2號映射到信
J.極其困難 不能快進。
信2映射到J. 3號映射到D.因此，
這個戒指，你可以給 有人信息1，2，3。
出於某種原因，你 想告訴他們XJD。
但是，你可以給他們 數字的一些消息，
並且，只要它們具有本環，它們 可以解密你想說什麼。
>> 所以，你可能已經看到了這一點 密碼學的具體的例子
之前，如果周圍的聖誕節 你看過聖誕故事。
如果你從來沒有見過 之前，那麼就
打開TBS在字面上 任何時候在聖誕節前夕，
因為他們只是顯示它背靠背 要回背靠背一整天。
而相關的視頻是這樣的。
[視頻回放]
-be是眾所周知的所有雜 拉爾夫·帕克現
任命小的一員 孤兒安妮秘密圈
並有權所有榮譽 而發生的收益於此。
簽名小孤兒安妮。
會簽皮埃爾·安德烈·墨！
榮譽和利益 已經在九歲的時候！
>> [大呼小叫無線電]
-COMe上。
讓我們開始吧。
我不需要所有的爵士樂 關於走私和海盜。
- 聽明天夜間 結論冒險
的黑色海盜船。
現在，它的時間為 安妮的秘密消息
為你的成員秘社的。
請記住孩子，只有成員 安妮的秘密圈
可以解碼安妮的秘密消息。
請記住，伊能靜取決於你。
設置你的引腳為B2。
這裡是該消息。
12。
11。
2。
- 我在我的第一次秘密會晤。
>> -25。
14。
11。
18。
16。
>> 哦，皮埃爾在巨大的聲音今晚。
我可以告訴大家，今晚的 信息是非常重要的。
-3。
25。
這與安妮自己的消息。
請記住，不要告訴任何人。
>> - 五秒鐘後，我的唯一 房間在房子裡的九個男孩
可以坐在隱私和解碼。
啊哈！
乙！
我去了下一個。
E.第一個字是“是”。
S.它現在來了更容易。
U. 25。
這是R.
-COMe上，拉爾夫！
我得走了！
-I'll被降權，馬！
嘖嘖颼颼。
T. O.“一定要” - 一定要什麼呢？
什麼是小孤兒 安妮想說什麼？
一定要什麼？
>> -Randy也得去！
請你出來？
>> - 所有正確的，媽媽！
我馬上就出來！
我是越來越近了。
張力是可怕的。
那是什麼？
這個星球的命運 可以掛在平衡！
>> -Ralphie，蘭迪得走了！
>> -I'll就出來，哭出聲來！
幾乎沒有！
我的手指飛。
我的心是一個鋼鐵陷阱。
每一個毛孔振動。
這幾乎是清楚的！
是。
一定要喝你的阿華田。
阿華田？
一個最低級的商業？
狗娘養的。
>> [結束播放]
>> 羅伯BOWDEN：所以這就是如何 阿華田涉及到加密。
基本上CS50剛剛公佈 阿華田，所以我們可以
是一個糟糕的商業為阿華田。
好的。
所以現在實際的計算機科學。
還記得在星期一，我們離開 潛水更深的字符串。
因此，我們正在處理 字符串“Zamyla”。
而且我們認識到 事實上，我們可以把
“Zamyla”作為一個字符序列。
請記住，我們學到了 支架符號。
因此，如果該值儲存 在字符串“s”，那麼
如果s表示托架0，這將 指示信資本Z.
如果我們s表示支架1，即 會指示第一小寫一個，
依此類推，直到為s支架5， 這顯示最後一個。
>> 現在，請記住， 此字符串的長度為6，
但是索引到字符串是 0到5，Z通過持續。
所以，現在這個融入一個更大的圖片 您的計算機的內存，您的RAM。
因此，地方的計劃， 你運行你的電腦
需要記住Zamyla 某處存儲器。
因此，我可以有一個志願者？
是的，請。
而你叫什麼名字？
>> 院長：院長。
>> 羅伯BOWDEN：院長？
很高興見到你，院長。
所以來這裡了， 我們要你畫
對我們的好漂亮的內存佈局。
現在，我喜歡把內存 作為一個字節一個長條形，
但只是為了顯示目的，我們將 只是從左至右，從上到下。
OK？
>> 所以，我要表現出 program-- Getstrings.c。
所以，這一切的程序是 做的是要求四根弦
從與用戶 GetString的，然後打印
無論是第一個串進了。
我們忽略了兩個通四人。
確定。
所以，在這裡now--時 我第一次請求S1。
所以你的電腦。
而要實現的GetString。
所以，你請求一個字符串 我，我說好，院長。
給字符串“院長。”
>> 如此在內存，你 需要記住的“院長。”
所以寫到內存的某個地方。
完善。
確定。
所以，現在我們已經S2。
和s2將是 請求給GetString。
所以，我要輸入一個字符串。
我要輸入“漢娜”。
因此，輸入“漢娜”的地方到內存中。
是啊。
A-H。
>> 好了，現在S3。
而這將是另一個 請給GetString。
所以現在進入“瑪麗亞”。
好的。
然後還有最後一個 請求給GetString，S4。
所以，我不知道。
怎麼樣，我們一起去 反政教分離運動。
所以輸入到內存中。
是啊。
所以，只是做“搶”。
>> 確定。
所以，現在explain--何必當初 你離開這些空間？
為什麼你有這樣的空白 空間在這裡，在這裡，並在這裡？
是。
所以，當我去通知 打印s1--所以如果我們
有“漢娜”運行 直到旁邊的“院長”
我們怎麼知道什麼時候 字符串“院長”結束？
因此打印字符串S1可以有 只印有“DeanHannahMariaRob”
如果它不具有任何線索 當“院長”實際上結束。
>> 好的。
因此，在存儲器中的方式，我們實際上 代表的字符串的這一端
是用反斜杠零。
所以這個空間正是我們想要的。
它應該是一個反斜杠為零。
這將是一個反斜杠零， 而這將是一個反斜杠為零。
你可以有一個神話般的獎金 為是一個完美的志願者。
以一個壓力球！
>> 確定。
所以這個人物反斜線為零 我們如何表示字符串的結束。
它是如何在任何給定的程序 要打印的字符串，
這是how--記得我們學 上週strlen函數？
字符串的長度？
它是如何字符串的長度能 確定字符串是多久。
它只是不斷迭代 在人物
直到找到 反斜線零字符。
因此，重要的是要實現 關於反斜線零字符
是它的代表 在位全部為零。
因此注意到，這是明顯的 從零字符。
因此，零字符，如果你還記得 在實施例，他在結束了
講座中，其中的字符映射 用於：像大寫字母A映射到65。
小寫映射到97。
小寫的B。將98。
因此數字0映射用於：我不知道 知道了我的頭頂。
44或45。
某處在該地區。
>> 這樣的字符0是實數。
但是反斜杠零 映射到所有零位。
因此，有區別 反斜線0之間，
我們稱之為空終止。
有區別 反斜線零和字符零。
>> 好的。
所以說話有點了解的字符串。
於是，我們在這裡看到，這是怎麼 它會在內存中進行佈局。
所以這個想法字符串作為一個序列 characters--所以官方電腦
sciency術語序列是一個數組。
所以我們稱之為一個字符串 字符數組。
而實際上有其他數據 類型，我們可以使陣列出來。
>> 因此，要鼓勵這一點，我們來看一個例子。
我們叫它ages0.c我會 複製和粘貼我們的模板。
確定。
因此，這個方案我們 想要做的就是抓住時代
三個學生選修的課程。
因此，我們知道的INT age-- 現在我要說0。
所以，你可能要說AGE-1，但 為了我們會看到非常短的，
我會說INT age0等於調用getInt。
因此，同樣的調用調用getInt 我們一直在使用我
沒有發生被提示 他說，“給我的年齡。”
但只是要求它。
>> 而AGE-1等於調用getInt。
和INT age2等於調​​用getInt。
所以，再一次，三個學生，但 最終的變量指標
是age0通過age2。
確定。
因此，這個程序將採取一切 我們希望與age0，AGE-1，和age2，
但這個方案最終 適用於三個學生。
>> 確定。
所以，現在如果我想四名學生？
好吧，我不得不回去 進入我的代碼，更改註釋，
現在我們有一個int age3等於調用getInt。
確定。
那麼，誰看到了問題嗎？
這是什麼問題 有了這樣的設置呢？
是啊。
因此，我們要創建一個 變量為每個學生。
現在的作品，但 最後，如果我現在
說，“我想抓住的年齡 八名學生和16名學生
或將然而，許多學生 在數百名學生在CS50
或者成千上萬的學生在校園裡 或在世界上數十億人？
所以這終究是不可持續的。
你看到自己複製任何時間 而像這樣的粘貼代碼，
你一般應該感到 有一個更好的辦法。
>> 因此，這是我們引入 一個數組聲明。
因此，當你聲明一個數組， 這是一般的格式
是將會是什麼樣的。
我們要說的類型。
然後我們要 給該數組的名稱，
就像我們定義任何給定的變量。
然後最後我們使用 這再次括號符號
但在從不同的上下文 我們如何早期使用它。
>> 所以在這裡，這看起來像一個正常的 我們已經看到變量聲明。
因此，我們以前見過INT×半結腸。
現在好了，我們可能會看到一些東西 如int x托架5。
並把這一想法付諸了 調用getInt程序，我們have--
所以我們可以實現 此以相同的方式。
>> 讓我們在CS說，我們傾向於使用 N作為某物的數目。
所以在這裡我們要 存儲4個學生。
現在，我們可以說INT年齡 支架N--不太明白yet--
宣布4名學生組成的數組。
因此，這將如何看在 內存將與此類似。
清除此。
而我們將要在什麼地方 在memory--我把這個在那裡。
>> 如此在存儲器中。
一，二，三，四。
我們有四個整數一行 對於四個整數數組。
因此，目前，什麼是 其中一個框的大小？
是啊。
這是四個字節。
這是32位。
所以，現在，這是不同的 從陣列，我們
看到人物的前面，數組。
在一個字符串中的每個盒子裡只有一個字節， 因為一個字符中只有一個字節。
但隨著整數數組，每個 盒必須是為了四個字節
以滿足整個整數。
所以這是一個數組 4整數會是什麼樣子。
>> 然後回代碼。
現在，我們要實際存儲 到整數數組。
所以，現在這是一個非常，非常，非常 常見的模式是會在某個點
成為肌肉記憶。
所以，INT I等於0。
我小於n。
我加再加。
年齡段i等於調用getInt。
>> 所以這個循環，這種格式， 你應該得到很習慣。
因此，這是通常我們將如何 遍歷幾乎所有的數組。
現在可以看到這樣的 從一開始就解釋了為什麼
我們沒有for循環去為INT i等於1，我小於或等於10。
原因是，從開始 零使這項工作很好地與陣列。
所以數組是零索引。
如果該數組的長度為4， 該指數為0至3。
>> 所以通過第一 迭代的for循環
我們將要設置年齡 支架0等於調用調用getInt。
所以，無論我發生了 在鍵盤上輸入。
在第二遍，我們 設置AGE-1等於調用getInt。
第三關，age2。
最後一傳age3。
因此，如果在該循環的第一次通 我輸入號碼4在鍵盤上，
然後我們會在這裡插入4。
如果我進入了第二遍 50，我們就放了50在這裡。
在第三次我可能 進入負1，負1，
然後最後，如果我進入0--和 現在想起來，這是指數三種。
>> 之後，我們回送，我是 將要增加至4。
i是不再小於n，這是4。
我們跳出循環。
那麼，什麼是錯呢？
[聽不清]？
聽眾：[聽不清]
>> 是。
因此，陣列只有四個名額， 這意味著作為索引0至3。
因此，如果是這樣的話，我會 取值4在某些時候。
年齡段4將被設定 無論發生什麼事是在這裡
什麼，我不得不說，進入6。
那將是它設置為6。
>> 但我們不知道什麼是在這裡。
這不是存儲器 我們接觸到。
所以，如果你還記得 以前的講座，
他打印出Zamyla的價值觀和 在某些時候，他打這個細分
故障。所以，你可能會看到 許多段錯誤，你
實施一些習題。
但是，這是一種方式，其中 你可能會遇到一個分割
故障，當你開始訪問 記憶中，你不應該有辦法。
所以我們沒有獲得 這個位置，這是一個錯誤。
>> 因此，這是更好的。
現在還有一個小 問題與此代碼。
而這基本上是我們 還停留在四個學生。
現在，如果我想使用八名學生，確定。
這不是什麼大不了的事。
我可以進去，改變 評論和n更改。
現在，這將與八名學生。
如果我這個編譯並運行 這一點，它會顯示我 -
它會要求整數八 學生和它只是工作。
但它不到理想的需要 重新編譯程序每一次
我想改變學生人數 我想進入的年齡為。
>> 因此，在最後的改進 這一點，因為我們將看到這裡 - 我們
要請求的人的數目。
在這裡，我們有一些 人在房間
或任何年齡段的人在房間裡。
但是，我們將請求數量 人在房間裡，從用戶。
因此，這是完全一樣的做，而 循環，我們以前見過。
這是完全一樣的 do-whil​​e循環，你
可實現對問題的設置。
因此，只要他們是 輸入的n小於1，
因此，有必須是在 至少有一個人在房間裡。
只要他們是 輸入的n小於1，
那麼我們要不斷地問了。
請輸入號碼 人在房間裡。
現在，當我們有多少 人在room--
所以我可能進入有 有200人在這個房間裡。
然後到這裡，我們要來了 並宣布尺寸200的數組。
我們聲明數組的 大到足以容納200歲。
下來，它的循環 你會得到非常習慣。
所以遍歷數組， 分配給每個位置
在該陣列的整數，和 那麼最終我們在這裡
剛開迭代的例子 通過該數組，而不是分配價值，
但訪問值。
>> 所以，在這裡我們可以看到，我們 從現在說，一年的時間，
人％我將％I歲， 其中第一個％i是我加1。
所以，我是這樣的指標變量。
而第二個％我會是 值存儲在陣列年齡加1。
所以這個加1僅僅是因為我們 saying--這種加1，我加1歲。
這加1僅僅是因為我們 從現在的人說，一年
將這個老。
>> 那麼，為什麼是這樣的我加1？
為什麼我們有一個加1呢？
是啊。
是。
所以請記住陣列零索引。
因此，如果我們打印這個出來 有人剛讀輸出，
那麼很可能他們想看到的東西 喜歡的人之一，個人排名第一，
將20歲。
人二號將是15歲。
他們不想看到的人 零號是15歲。
>> 因此，編譯這一點，只是看到什麼 它看起來like--創建一些空間。
讓年齡編譯。
運行青睞。
我們看到在房間裡的人數。
所以我會說有 三個人在房間裡。
人的頭號年齡， 讓我們說15，20，25。
現在我會說每年從 現在，他們將16，21，26。
讓我們來看看這個作品 的n不等於3。
所以，如果我說的人數是5，一， 二，三，二，一，從現在起一年
他們會是兩個，三個， 四，三，二十歲。
所以，我可以只為 輕易n為10,000。
現在，我會坐在這裡很 一個在進入老齡化，但這個工程。
>> 所以，現在在內存的某個地方，我們 有大小萬的陣列，
所以最終40000 字節，因為有
四個字節為每個整數。
因此，有一組 尺寸萬，我們可以
存儲這些10000人的青睞。
好的。
任何有關這個問題？
是啊。
如果你給一個負數？
讓我們看看會發生什麼。
所以在這個特定case--數 人在房間裡，消極的。
它拒絕了， 因為在這裡，我們發生
待處理的事實，如果n是 不到一個我們要再次問。
如果您嘗試聲明 大小為負的數組，
它通常是行不通的。
>> 所以讓我們試試。
讓我們忽略了什麼 他們的價值輸入n個
而只是說INT年齡負值。
讓我們來看看它甚至編譯。
我不知道。
第
因此，年齡聲明為 陣列具有負大小。
所以前期就識別到陣列不能 為負數的大小和拒絕。
現在，如果我們不處理 這do-whil​​e循環正常，
如果我們不檢查 如果n小於1--
比方說，我們只是 沒有這在所有
相反，我們只要抓住一個整數。
不管是什麼整數， 我們聲明大小的數組。
>> 因此，編譯器不能 可能抱怨現在。
如果我編譯this-- 因此它不能抱怨，
因為它無法知道我 要輸入一個負數，
這可能是無效的。
對於所有它知道，我可能 輸入一個正數，
這是完全有效的。
所以我想，如果我進入負1 房間裡的人，分段錯誤。
>> 因此，確定。
因此，讓我們加入這回只是 保持它原來是什麼。
因此，請青睞。
現在，如果我想嘗試 負age--讓我們
說，有五人在房間裡。
人的頭號年齡 為負4，人3
是零，人three--行。
所以在這裡，一年後的今天，人的數量 一會是負的3歲。
所以，很可能是沒有意義的。
但是，這僅僅是因為看 在代碼中所有我們正在做的
請求調用getInt。
>> 現在，如果我們曾經有過 GetPositiveInt功能
或者我們剛剛只是做到了這一點 排序一致，而循環出現了下滑，
那麼這將完全正常工作。
但在這個特殊的 情況下，我們只是不
碰巧是處理負值。
有關數組的任何其他問題？
確定。
>> 所以，我們現在已經看到陣列。
而我們將需要使用 本作的命令行參數。
因此，在問題設置two-- 我知道你們許多人
可能仍在工作的問題集 之一，但問題設置兩個快到了。
在問題設置兩個，你要 必須處理字符串，數組，
和命令行參數。
>> 那麼，什麼是命令行參數？
現在，你可以看到到這裡一 小傳情什麼的
將要發生的事情。
我們看到INT為主，INC ARGC， 字符串argv的括號內。
因此，首先讓我們來試著解讀 是什麼，它盡可能地說。
如今，OK。
>> 因此，在命令行中，你應該 已經習慣了某些命令
現在，你可能已經運行 CD在終端前。
因此，如果我們說的CD PSET1， 你知道，這應該
要改變到PSET1目錄。
>> 現在發現，你從來沒有 之前寫的這樣的程序。
你寫的每個程序， 你會跑，說，點斜線馬里奧，
點斜線貪婪，然後 可能會提示您輸入。
現在，這不是 更改目錄一樣。
當你運行光盤，它並沒有那麼說， 該目錄下你想cd到？
相反，你剛才說，CD PSET1和 它只是進入PSET1目錄。
>> 所以類似地，我們有其它例子。
讓你好。
當你運行make，它並沒有那麼說， 該方案將你喜歡做什麼？
你剛才說，在 命令行讓你好。
>> 此舉是另一個例子。
這一次，我們正在移動的 mario.c文件上一級目錄。
所以，現在我們知道這個例子 我們真正傳遞了兩個參數。
有mario.c作為第一個參數， 和點點是第二個參數。
然後當你運行make，你 看到很長的命令line--
真的長的命令 印在命令行。
因此，長期command--這 是它只有很短的一部分，
但現在我們有三個 命令行參數。
點短跑零，你好，和hello.c的。
>> 因此，這些都是命令行 論點，論據
那你傳遞的 命令行，以便它
不必被提示 當你運行該程序。
這將是令人沮喪，如果當 您運行鐺它說：“好，
這program--這 文件是在編譯？
HELLO.C。
什麼標誌你會 想進入？破折號O操作。
你要什麼 該文件被稱為？
你好。
不，你只要運行鐺 衝Ø你好hello.c的。
>> 因此，在回顧這個。
現在argc-- ARGC是參數計數。
它的命令行的數量 輸入參數在命令行。
那麼，argv--技術 在V代表矢量，
這基本上意味著陣列。
但是你可以忽略。
Argv--我們有串argv的， 所以字符串argv的括號內。
因此，這是另一種形式的 括號你以前沒有見過。
所以，我們看到的支架 符號時，我們已經說過了，
像，字符串s等於Zamyla。
小號托架0訪問字符Z.
>> 我們也看到括號時 我們說INT年齡支架5。
這個聲明的大小5陣列。
因此，這裡是一個版本的 我們以前沒見過括號。
因此，這類字符串的argv的 將完全熟悉
這將只是一個字符串。
現在括號表示 這是一個數組。
所以字符串argv的括號手段 這ARGV是一個字符串數組。
現在技術上的字符串 是字符數組。
所以，這是現在一個數組 字符數組的。
但它更容易去思考 串這只是作為一個陣列。
>> 那麼，為什麼會在括號內是空的？
就像，為什麼我們不能說， 支架5，支架N +
是啊。
我們不知道有多少 輸入有將要。
因此，如果我們看一下鐺的例子， 我們說鐺破折號Ø你好hello.c的。
在這種特殊情況下，有發生 是三個命令行參數。
這樣一來，brackets--我們拭目以待 在第二它不會是三種。
它在技術上的數字是4。
但支架，我們會 比方說，有三種。
但是現在，如果我們看招 mario.c點點，括號
我們希望把兩個他們。
>> 這裡面有很多的命令是 具有可變數量的命令行
參數。
那麼這個版本的 括號符號表示
是的argv是一個字符串數組。
但是，我們不知道有多少 字符串的數組。
我們如何然後知道如何 許多字符串數組中？
這是整點ARGC。
ARGC告訴我們的argv有多長。
>> 所以，過去的事情保持 頭腦是，從技術上，
命令本身視為一個 的命令行參數。
所以光盤PSET1，有兩種 命令行參數。
在本身的程序，光盤，然後 它的實際參數部分，PSET1。
任何你寫迄今程序 已經有一個命令行argument--點
斜線馬里奧。
這是唯一的命令行參數。
>> 所以，現在看著鐺 衝Ø你好hello.c的。
那麼，什麼是ARGC？
4。
所以ARGC為4。
鐺，所以argv的支架0是鏗鏘。
argv的支架1是衝刺0。
argv的支架2個招呼， argv的支架3 hello.c的。
好了，問題在這，然後我們會 看一些編程的例子。
>> 確定。
因此，我們將看看hello3.c。
所以這應該是由熟悉 的第一個C的例子之一
我們有，我們只想說，你好 世界，但現在這個就比較一般了。
因此，我們在這裡打個招呼 ％S反斜線ñargv的支架1。
Notice--所以直至這一點，這是 什麼我的模板文件看起來像。
我有INT主要（無效），然後我會 做一些在主函數。
現在相反，一旦我們開始處理 使用命令行參數，
我們要說明一個 不同的形式為主。
>> 所以在看hello3 再次，主要會
拿兩個參數now-- INT ARGC， 命令行參數的個數，
和字符串argv的支架，實際 輸入字符串在命令行。
所以我要改變這種狀況 模板來反映這一事實。
現在，只要你寫 一個程序，如果你不
需要採取的任何命令行 參數，那麼就使用int主要（無效）。
但是現在，當你寫 命令行參數的程序，其中
你會做的問題 設置two--所以現在你正在運行
需要採取的方案 命令行參數，
你需要有主要的這種形式。
>> 所以這裡 - 這是大用途 的命令行參數。
所以打印的argv 1。
好讓我們編譯 並運行此程序。
讓hello3。
編譯。
點斜線hello3。
而讓我們說，“搶”。
您好羅布。
如果我說，“你好瑪麗亞，”你好瑪麗亞。
您好瑪麗亞。
漢娜還稱，“你好 瑪麗亞，“因為我不是
做我們的argv 2東西。
ARGV 2現在是“漢娜”。
ARGC將是3。
如果我這樣做？
所以，你好空。
>> 他簡要介紹了這一事實 ，從技術上，GetString的
可能返回null，但我們會得到一個 很多成什麼空實際上是。
但把它當作的事 事實上，沒有一般是不好的。
我們做錯了什麼，如果 它的輸出“Hello空。”
其原因我們做了 有些不對勁is--好，
當我跑點斜線hello3，ARGC為1。
因此，這意味著argv的長度為1。
如果數組的長度為1， 唯一有效的指標是零。
所以，這裡的argv 1是外 此數組的範圍。
這是類似於以前，當我試圖 存儲6陣列的端外。
所以我想訪問什麼 在argv數之外，
而我們得到空。
>> 所以一個更好的版本 此，一種改進，
明確檢查ARGC。
因此，如果ARGC等於2，這意味著我們跑 像點斜線hello3羅布。
它會打印“你好搶。”
如果ARGC不等於 2，那麼它只是將
忽略不管你把 在命令行參數
作為命令行參數。
或者，如果你沒有把所有的一切，這是 只是要忽略這一點，只是說，
“你好，你。”
>> 因此，編制本。
讓hello4。
而運行hello4。
跑步是這樣， 應該怎樣打印？
“你好，你。”
你好，你。
那麼hello4羅布？
“你好搶。”
最後，你好羅布·瑪麗亞· 僅僅是“你好，你”了，
因為你沒有真正進入 東西，它的預期。
您輸入了更多的名字 比它可以處理，
所以它只是默認為 你好，你的行為。
因此，在這個問題嗎？
或者命令行參數？
>> 好了，縱觀一 利用夫婦更多的例子
命令行arguments--第一 我們的argv破折號1點溫度。
因此，意見白送什麼 這個程序應該做的。
但是請注意now-- for循環， 這匹配的精確模式
我說了。
我們恰好是 用n個ARGC代替。
現在ARGC真的是n個。
它的argv數組的長度。
因此，在遍歷ARGV 陣列的printf - 荷蘭國際集團各argv的值。
>> 所以，如果我做這個。
請ARGV 1。
它編譯。
點斜線的argv 1。
就在運行這一點， 打印點斜線的argv 1
因為這是唯一的命令行 argument--程序名稱。
總是會有在least-- 的argc不能小於1，
因為總會有至少 是程序名運行。
所以argv的1羅布將打印的argv 1 然後在新行“搶”。
>> 因此在第一次迭代 此循環中，i是0。
ARGV 0是程序名。
點斜線的argv 1。
然後的argv 1是我第一次 命令行參數，這是羅布。
在這一點上，我們是平等的像argc。
我們跳出循環，我們就大功告成了。
因此，這將適用於任意 命令行參數的數目。
請注意，它打印的argv 0，argv的 1，ARGV 2，ARGV 3，argv的4。
而且沒有ARGV 5。
的argc等於5。
因此，在argc--在i等於5， 我們跳出循環。
確定。
因此，我們之前的問題上 看一個更複雜的例子？
>> 所以ARGV 2。
好的。
因此，我們仍然打印 命令行參數。
但現在發現，我們有 一個嵌套的循環。
那麼，什麼是該做的？
因此，第一個循環是做 正是以前一樣。
我們還在遍歷 每一個命令​​行參數，
但現在這第二loop--我們已經 之前也看到了這樣的事情。
當他被遍歷 Zamyla打印出Z-A-M-Y-L-A。
所以這第二個循環對於int j為 0，n等於argv的支架我的strlen的。
>> 因此，讓我們首先想到的 the--讓我們穿行。
讓我們思​​考什麼電腦會 怎麼做，如果我跑這個項目剛才點
斜線的argv衝刺2。
所以，如果我跑這個代碼，然後 的argc將是等於1。
和字符串argv--這裡只有 將是一個索引argv中，
而這將是等於點 斜線的argv 2--程序名稱。
>> 好了，現在我等於0，小於我 1，我加再加對於int j為0，
n等於argv的支架0 strlen的，所以在 此循環的第一次迭代。 ARGV
支架0點斜線的argv 2。
那麼，什麼是該字符串的長度？
好了，點斜線A-R-G-V儀表板2。
這樣的strlen的，這將是8。
所以j為0，n等於8。
只要j是小於8，J ++。
有了這樣的，我們要成為 打印單個字符，它
是argv的支架我括號學家
>> 因此，只有我是零。
我們仍然只有一個 命令行參數。
在這第一次迭代 的for循環，我們
將要印刷 argv的支架0支架0。
然後j被要遞增。
而且我們要打印 argv的支架0支架1。
然後argv的支架0支架2。
>> 所以這是我們第一次遇到 多維數組。
還記得前面我說的 這ARGV在技術上
字符的數組的數組。
所以在這裡，如果我說的一樣 字符串s等於argv的支架我，
然後我說，S支架Ĵ，這 將完成同樣的事情。
現在，你已經看過小號支架學家
這只是訪問的第j個 字符該字符串。
因此，與這一點，我們所得到的 第i個的argv的第j個字符。
>> 那麼，這應該最終輸出？
做的argv 2。
它編譯。
點斜線的argv 2。
“羅布·瑪麗亞·漢娜，” 並給我們一些空間。
所以我們看到，這是輸出 點上了自己的線，斜線
在自己的線路和自己的行。
它打印出的每個 個性
每個命令行參數。
然後在它們之間， 因為這個新線
我們要打印到這裡，在 他們之間它會打印新的生產線。
>> 因此，這是類似於 以前的argv破折號1，
它印在每個 命令行參數，
但現在我們要打印 命令行參數
然後通過每個迭代 每一個命令​​行參數的字符
得到這個輸出。
OK？
因此，在這個問題嗎？
>> 有一點要注意的是， 命令行arguments--
所以它們之間用空格分隔為 你自然會期望他們。
這樣一個串可具有在它的空間。
這不是超級重要，但如果我 希望第三個命令行參數
有一個空間，然後我 可以說這樣的事情。
OK？
所以這個現在還只有三個 命令行arguments--以及4。
點斜線的argv衝刺2，搶， 瑪麗亞和漢娜彭博。
確定。
在這個問題？
>> 沒有什麼特別的 有關空格字符。
這恰好是該 命令行把空格字符
如何你分開每一個參數。
好的。
那麼接下來的問題集 two--你將是
看著密鑰加密。
因此，類似於在實施例 我們從聖誕故事看到，
你將要實施的一些 即，給定的消息的算法，
你要能 該消息加密
只有具有這個秘密的人 鍵，用解碼器環，
應該能夠進行解密。
>> 所以這是標​​準版。
你會被執行 兩個不同的版本。
如果你碰巧看看 在現在的黑客版 - 的，
我們打算給 你喜歡這樣的字符串，
它表示一個加密口令。
所以，你的目標是要弄清楚 解密的口令是什麼。
現在，這其實是多麼的密碼 存儲在很多計算機，
它只是存儲此 隨機字符串。
你必須弄清楚如何獲得 從這個隨機字符串
什麼原始密碼了。
>> 最後，在此之後 問題集，你應該
能夠理解這是什麼意思。
所以，您將學習如何解密 這種隨機的字符串。
同樣，如果您從週記 0，你可能已經看到了這個網址。
而且你應該能 最終解密此。
你可能不會開心，當你 解密並點擊鏈接。
好的。
以上就是今天。
所以，看到你下週！
>> [電子音樂播放]