1 00:00:00,000 --> 00:00:03,944 >> [เล่นเพลง] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID ลัน: สิทธิทั้งหมด 4 00:00:11,690 --> 00:00:14,674 นี่คือ CS50 และนี้ เป็นจุดสิ้นสุดของสัปดาห์ที่ 2 5 00:00:14,674 --> 00:00:16,840 ฉันขอโทษฉันไม่สามารถมี มีกับทุกท่านในวันนี้ 6 00:00:16,840 --> 00:00:18,300 แต่คุณอยู่ในมือที่ดีมาก 7 00:00:18,300 --> 00:00:21,710 ให้ผมแนะนำ CS50 ของตัวเองร็อบโบว์ 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN: และแน่นอนแล้ว เราจะต้องทำให้ความสนุกของความเป็นจริง 10 00:00:31,730 --> 00:00:36,820 ที่เขาส่งมาให้เราแนวตั้ง วิดีโอและแสดงให้เห็นนี้ 11 00:00:36,820 --> 00:00:38,320 >> [วิดีโอเล่นภาพ] 12 00:00:38,320 --> 00:00:39,820 >> [เล่นเพลง] 13 00:00:39,820 --> 00:00:42,350 >> [รอยเท้า] 14 00:00:42,350 --> 00:00:44,730 >> วิดีโอ -This ไม่ได้ ต้องดูทางนี้ 15 00:00:44,730 --> 00:00:46,570 มันอาจจะได้รับการป้องกัน 16 00:00:46,570 --> 00:00:49,070 บอกว่าไม่มีการวิดีโอในแนวตั้ง 17 00:00:49,070 --> 00:00:53,310 >> วิดีโอแนวตั้งเกิดขึ้นเมื่อคุณ ถือกล้องของคุณทางที่ผิด 18 00:00:53,310 --> 00:00:55,880 วิดีโอของคุณจะจบ มองเหมือนอึ 19 00:00:55,880 --> 00:00:57,650 >> - [ฮึดฮัด] 20 00:00:57,650 --> 00:01:02,240 >> -There เป็นคนมากขึ้นและติดยาเสพติด เพื่อการทำวิดีโอในแนวตั้งทุกวัน 21 00:01:02,240 --> 00:01:06,240 มันไม่ได้แตกหรืออะไร แต่ก็ยังคงไม่ดีจริงๆ 22 00:01:06,240 --> 00:01:10,410 มีสองชนิดที่แตกต่างกันอยู่ คนที่มีความทุกข์กับ VVS 23 00:01:10,410 --> 00:01:14,160 กลุ่มแรกถือว่า วิดีโอที่พวกเขาถ่ายภาพเหมือนภาพ 24 00:01:14,160 --> 00:01:15,850 พวกเขาไม่ได้หมายถึงอันตรายใด ๆ 25 00:01:15,850 --> 00:01:19,180 พวกเขาก็ไม่เข้าใจว่า ในขณะที่คุณสามารถเปิดภาพ 26 00:01:19,180 --> 00:01:20,880 คุณไม่สามารถจริงๆเปิดวิดีโอ 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [ลิงเสียง] 29 00:01:23,460 --> 00:01:27,540 >> -The กลุ่มอื่น ๆ ที่เป็นคน ที่ไม่ได้ให้ [แหลม] 30 00:01:27,540 --> 00:01:31,090 >> วิดีโอซินโดรมแนวตั้งเป็นอันตราย 31 00:01:31,090 --> 00:01:34,120 ภาพเคลื่อนไหวที่มี ได้เสมอในแนวนอน 32 00:01:34,120 --> 00:01:35,990 โทรทัศน์เป็นแนวนอน 33 00:01:35,990 --> 00:01:38,380 หน้าจอคอมพิวเตอร์เป็นแนวนอน 34 00:01:38,380 --> 00:01:41,580 สายตาของผู้คนที่มีแนวนอน 35 00:01:41,580 --> 00:01:45,170 เราไม่ได้สร้างขึ้นเพื่อ ดูวิดีโอในแนวตั้ง 36 00:01:45,170 --> 00:01:47,600 >> -I รักวิดีโอในแนวตั้ง 37 00:01:47,600 --> 00:01:50,410 >> ใส่ใจ -Nobody เกี่ยวกับคุณ 38 00:01:50,410 --> 00:01:53,340 >> ถ้าปัญหานี้ ซ้ายไม่ จำกัด , คุณมากเกินไป 39 00:01:53,340 --> 00:01:57,650 จะเริ่มต้นการแสดงสี่วิดีโอ ในครั้งเดียวเพียงเพื่อประหยัดแบนด์วิดธ์ 40 00:01:57,650 --> 00:02:02,400 >> วิดีโอแนวตั้งจะ -Letterboxed มีขนาดของแสตมป์ 41 00:02:02,400 --> 00:02:04,920 >> และอื่นมันจะแพร่กระจายไปทุกที่ 42 00:02:04,920 --> 00:02:07,670 มีหน้าจอภาพยนตร์ ได้เสมอในแนวนอน 43 00:02:07,670 --> 00:02:11,200 หากวิดีโอกลายเป็นแนวตั้ง ได้รับการยอมรับโรงภาพยนตร์ 44 00:02:11,200 --> 00:02:13,930 จะต้องสูงและผอม 45 00:02:13,930 --> 00:02:17,710 >> และอื่นทั้งหมดของโรงภาพยนตร์จะ ได้จะได้รับการฉีกขาดลงและสร้างขึ้นมาใหม่ 46 00:02:17,710 --> 00:02:22,090 และเมื่อถึงเวลาที่พวกเขาสร้างขึ้นมาใหม่ Mila Kunis จะเก่าและน่าเกลียด 47 00:02:22,090 --> 00:02:24,342 >> -Birds จะผิดพลาดในพวกเขาและตาย 48 00:02:24,342 --> 00:02:26,530 >> ทุกคนได้รับ -We'll แข็ง คอจากการมองขึ้น 49 00:02:26,530 --> 00:02:29,800 >> และอื่นไม่มีใครจะนั่งอยู่ใน แถวหน้าที่เคยอีกครั้ง 50 00:02:29,800 --> 00:02:37,170 >> จอร์จลูคัสจะกลับปล่อยดาว สงคราม again-- รุ่นผอม 51 00:02:37,170 --> 00:02:41,860 >> -I จริงๆก็ไม่เคยสามารถที่จะบอก เรื่องที่ผมอยากจะบอก 52 00:02:41,860 --> 00:02:46,030 นี่เป็นโอกาสที่ดีสำหรับผมที่จะ การทดสอบด้วยเทคโนโลยีใหม่ 53 00:02:46,030 --> 00:02:48,150 >> มั้กระตุก 54 00:02:48,150 --> 00:02:54,430 >> ทาเวลาโทรศัพท์มือถือที่ใช้ในการ วิดีโอบันทึกสิ่งล่อใจที่มี 55 00:02:54,430 --> 00:02:56,370 เพียงแค่บอกว่าไม่มี 56 00:02:56,370 --> 00:03:00,116 บอกว่าไม่มีการจอร์จลูคัส 57 00:03:00,116 --> 00:03:04,062 บอกว่าไม่มีการเก่า Mila Kunis 58 00:03:04,062 --> 00:03:06,600 บอกว่าไม่มีการวิดีโอในแนวตั้ง 59 00:03:06,600 --> 00:03:12,511 >> และอื่นถ้าคุณเห็นคนที่ทำมันพูดว่า "คุณไม่ได้ยิงหุ่นที่ถูกต้อง!" 60 00:03:12,511 --> 00:03:15,433 >> [เล่นเพลง] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [จบเล่นภาพ] 63 00:03:19,830 --> 00:03:23,702 >> [APPLAUSE] 64 00:03:23,702 --> 00:03:27,598 >> [OUT AUDIO] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 ROB BOWDEN: --simple รูปแบบของการเข้ารหัส 67 00:03:45,790 --> 00:03:49,500 ซึ่งเป็นพื้นการเข้ารหัส และถอดรหัสข้อความลับ 68 00:03:49,500 --> 00:03:52,590 ดังนั้นที่นี่เรามีของเล่นที่ง่ายมาก 69 00:03:52,590 --> 00:03:56,900 และความคิดที่เป็นวงแหวนรอบนอก หมุนรอบแหวน 70 00:03:56,900 --> 00:04:01,610 และคุณสามารถเห็นบางทีถ้าผมซูม ใน that-- มันยากที่จะเห็น 71 00:04:01,610 --> 00:04:05,090 แต่เหมือนจำนวน 1- ดีที่ย้าย 72 00:04:05,090 --> 00:04:09,120 >> จำนวน 1 แผนที่ไปยังตัวอักษร X จำนวน 2 แผนที่ไปยังตัวอักษร 73 00:04:09,120 --> 00:04:11,630 เจยากอย่างไม่น่าเชื่อ ไม่ได้ที่จะข้ามไปข้างหน้า 74 00:04:11,630 --> 00:04:16,100 ตัวอักษร 2 แผนที่เจ จำนวน 3 แผนที่จะดีดังนั้น 75 00:04:16,100 --> 00:04:20,140 กับแหวนวงนี้คุณสามารถให้ คนข้อความที่ 1, 2, 3 76 00:04:20,140 --> 00:04:22,624 ด้วยเหตุผลบางอย่าง ต้องการที่จะบอกพวกเขา XJD 77 00:04:22,624 --> 00:04:24,540 แต่คุณสามารถให้พวกเขา ข้อความบางส่วนของตัวเลข 78 00:04:24,540 --> 00:04:28,460 และตราบใดที่พวกเขามีแหวนวงนี้พวกเขา สามารถถอดรหัสสิ่งที่คุณกำลังพยายามที่จะพูด 79 00:04:28,460 --> 00:04:32,510 >> ดังนั้นคุณอาจจะได้เห็นนี้ ตัวอย่างเช่นโดยเฉพาะอย่างยิ่งของการเข้ารหัส 80 00:04:32,510 --> 00:04:36,640 ก่อนถ้าไปรอบ ๆ ในช่วงเทศกาลคริสต์มาส คุณได้ดูเรื่องคริสต์มาส 81 00:04:36,640 --> 00:04:38,520 ถ้าคุณไม่เคยเห็น มาก่อนแล้วก็ 82 00:04:38,520 --> 00:04:41,060 เปิด TBS ที่แท้จริง เวลาในวันคริสต์มาสอีฟใด ๆ 83 00:04:41,060 --> 00:04:44,510 เพราะพวกเขาก็แสดงให้เห็นว่ามันกลับไปกลับ การสำรองการสำรองการสำรองตลอดทั้งวัน 84 00:04:44,510 --> 00:04:46,744 และวิดีโอที่เกี่ยวข้องคือ 85 00:04:46,744 --> 00:04:47,410 [วิดีโอเล่นภาพ] 86 00:04:47,410 --> 00:04:50,020 -Be มันที่รู้จักกันทั้งเพ ที่ราล์ฟปาร์กเกอร์เป็นขอ 87 00:04:50,020 --> 00:04:52,850 ได้รับการแต่งตั้งเป็นสมาชิกของเล็ก ๆ น้อย ๆ เด็กกำพร้าแอนนี่วงกลมลับ 88 00:04:52,850 --> 00:04:56,490 และมีสิทธิที่จะได้รับเกียรตินิยมทั้งหมด และผลประโยชน์ที่เกิดขึ้นดังกล่าว 89 00:04:56,490 --> 00:04:59,010 ลงนามกำพร้าแอนนี่ 90 00:04:59,010 --> 00:05:03,120 ปิแอร์อังเดรราชโองการหมึก! 91 00:05:03,120 --> 00:05:07,460 เกียรติประวัติและผลประโยชน์ แล้วที่อายุสิบเก้า! 92 00:05:07,460 --> 00:05:12,530 >> [ตะโกนจาก RADIO] 93 00:05:12,530 --> 00:05:13,030 -เข้ามา. 94 00:05:13,030 --> 00:05:14,000 ให้ของได้รับกับมัน 95 00:05:14,000 --> 00:05:18,274 ฉันไม่จำเป็นต้องทุกสิ่งที่แจ๊ส เกี่ยวกับการลักลอบและโจรสลัด 96 00:05:18,274 --> 00:05:20,440 คืนพรุ่งนี้ -Listen กับ การผจญภัยสรุป 97 00:05:20,440 --> 00:05:22,540 ของเรือโจรสลัดสีดำ 98 00:05:22,540 --> 00:05:25,460 ตอนนี้ก็ถึงเวลาสำหรับ ข้อความลับของแอนนี่ 99 00:05:25,460 --> 00:05:28,620 สำหรับคุณสมาชิกของวงกลมลับ 100 00:05:28,620 --> 00:05:32,370 โปรดจำไว้ว่าเด็กเฉพาะสมาชิก ของแอนนี่ความลับของวงกลม 101 00:05:32,370 --> 00:05:34,880 สามารถถอดรหัสข้อความลับของแอนนี่ 102 00:05:34,880 --> 00:05:39,100 โปรดจำไว้ว่าแอนนี่ขึ้นอยู่กับคุณ 103 00:05:39,100 --> 00:05:41,660 ตั้งขาของคุณเพื่อ B2 104 00:05:41,660 --> 00:05:43,960 นี่คือข้อความนั้น 105 00:05:43,960 --> 00:05:44,680 12 106 00:05:44,680 --> 00:05:45,180 11 107 00:05:45,180 --> 00:05:45,679 2 108 00:05:45,679 --> 00:05:48,110 -I am ในการประชุมลับครั้งแรกของฉัน 109 00:05:48,110 --> 00:05:49,030 >> -25 110 00:05:49,030 --> 00:05:49,834 14 111 00:05:49,834 --> 00:05:51,040 11 112 00:05:51,040 --> 00:05:51,854 18 113 00:05:51,854 --> 00:05:52,670 16 114 00:05:52,670 --> 00:05:54,570 >> โอ้ปิแอร์อยู่ในเสียงที่ดีในคืนนี้ 115 00:05:54,570 --> 00:05:57,490 ผมบอกได้เลยว่าคืนนี้ เป็นข้อความที่สำคัญจริงๆ 116 00:05:57,490 --> 00:05:57,990 -3 117 00:05:57,990 --> 00:06:00,080 25 118 00:06:00,080 --> 00:06:01,580 นั่นคือข้อความจากแอนนี่ตัวเอง 119 00:06:01,580 --> 00:06:02,880 โปรดจำไว้ว่าอย่าบอกใคร 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Five วินาทีต่อมาผมอยู่ในเฉพาะ ห้องพักในบ้านที่เป็นเด็กเก้า 122 00:06:11,130 --> 00:06:15,830 จะนั่งในความเป็นส่วนตัวและถอดรหัส 123 00:06:15,830 --> 00:06:16,620 Aha! 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 ผมไปต่อไป 126 00:06:20,210 --> 00:06:23,300 อีคำแรกคือ "เป็น." 127 00:06:23,300 --> 00:06:25,880 เอสมันได้มาง่ายขึ้นในขณะนี้ 128 00:06:25,880 --> 00:06:28,400 ยู 25 129 00:06:28,400 --> 00:06:30,528 นั่นคืออาร์ 130 00:06:30,528 --> 00:06:31,278 -Come บนฟี่! 131 00:06:31,278 --> 00:06:31,861 ฉันต้องไป! 132 00:06:31,861 --> 00:06:33,182 ผมจะไปมีสิทธิลงแม่! 133 00:06:33,182 --> 00:06:36,038 Gee หวือ 134 00:06:36,038 --> 00:06:42,840 ทีโอ "ให้แน่ใจว่าได้" - ให้แน่ใจว่าสิ่งที่? 135 00:06:42,840 --> 00:06:44,770 อะไรคือสิ่งเล็ก ๆ น้อย ๆ เด็กกำพร้า แอนนี่พยายามที่จะพูด? 136 00:06:44,770 --> 00:06:46,381 ให้แน่ใจว่าได้อะไร? 137 00:06:46,381 --> 00:06:47,825 >> -Randy ได้มีที่จะไป! 138 00:06:47,825 --> 00:06:48,866 คุณจะกรุณ​​าออกมา? 139 00:06:48,866 --> 00:06:49,783 >> สิทธิพักแม่! 140 00:06:49,783 --> 00:06:51,786 ฉันจะออกขวา! 141 00:06:51,786 --> 00:06:53,606 ผมได้รับในขณะนี้อย่างใกล้ชิด 142 00:06:53,606 --> 00:06:55,550 ความตึงเครียดเป็นที่น่ากลัว 143 00:06:55,550 --> 00:06:57,050 มันคืออะไร? 144 00:06:57,050 --> 00:06:59,905 ชะตากรรมของโลก อาจแขวนอยู่ในสมดุล! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, แรนดี้ได้ที่จะไป! 146 00:07:01,736 --> 00:07:05,680 >> ผมจะไปมีสิทธิออกสำหรับร้องไห้ออกมาดัง ๆ ! 147 00:07:05,680 --> 00:07:07,170 เกือบจะมี! 148 00:07:07,170 --> 00:07:08,150 นิ้วมือข​​องฉันบิน 149 00:07:08,150 --> 00:07:09,980 ใจของฉันเป็นกับดักเหล็ก 150 00:07:09,980 --> 00:07:11,496 ทุกขุมขนสั่นสะเทือน 151 00:07:11,496 --> 00:07:13,268 มันเป็นที่ชัดเจนเกือบ! 152 00:07:13,268 --> 00:07:13,767 ใช่ 153 00:07:13,767 --> 00:07:14,609 ใช่ 154 00:07:14,609 --> 00:07:15,108 ใช่ 155 00:07:15,108 --> 00:07:16,449 ใช่ 156 00:07:16,449 --> 00:07:20,240 ให้แน่ใจว่าได้ดื่มโอวัลติของคุณ 157 00:07:20,240 --> 00:07:20,740 โอวัลติ? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 พาณิชย์ crummy? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 ไอ้บ้า 162 00:07:34,920 --> 00:07:35,890 >> [จบเล่นภาพ] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: เพื่อให้เป็นวิธี โอวัลติที่เกี่ยวข้องกับการเข้ารหัส 164 00:07:39,650 --> 00:07:42,290 โดยทั่วไป CS50 โฆษณาเพียง โอวัลติเพื่อที่เราจะทำได้ 165 00:07:42,290 --> 00:07:44,400 จะเป็นเชิงพาณิชย์ crummy สำหรับโอวัลติ 166 00:07:44,400 --> 00:07:44,900 ทั้งหมดขวา 167 00:07:44,900 --> 00:07:47,120 ดังนั้นตอนนี้วิทยาการคอมพิวเตอร์ที่เกิดขึ้นจริง 168 00:07:47,120 --> 00:07:50,670 โปรดจำไว้ว่าในวันจันทร์ที่เราออกมา การดำน้ำลึกลงไปในสาย 169 00:07:50,670 --> 00:07:52,820 ดังนั้นเราจึงได้รับการจัดการกับ สตริง "Zamyla." 170 00:07:52,820 --> 00:07:55,130 และเราก็ตระหนักถึง ความจริงที่ว่าเราสามารถรักษา 171 00:07:55,130 --> 00:07:57,510 "Zamyla" เป็นลำดับของตัวอักษร 172 00:07:57,510 --> 00:07:59,740 และจำไว้ว่าเราได้เรียนรู้ สัญกรณ์วงเล็บ 173 00:07:59,740 --> 00:08:01,995 ดังนั้นหากนี้ถูกเก็บไว้ ในสตริง "s" แล้ว 174 00:08:01,995 --> 00:08:05,860 ถ้าเราบอกว่ายึด s 0 ที่จะ บ่งบอกถึงตัวอักษรซี 175 00:08:05,860 --> 00:08:09,790 และถ้าเรากล่าวว่าวงเล็บ s 1 ที่ จะบ่งบอกถึงตัวพิมพ์เล็กครั้งแรก 176 00:08:09,790 --> 00:08:14,220 และอื่น ๆ ขึ้นไปยึด s 5 ซึ่งจะบ่งบอกถึงสุดท้าย 177 00:08:14,220 --> 00:08:17,090 >> ตอนนี้จำไว้ว่า ความยาวของสายนี้คือ 6, 178 00:08:17,090 --> 00:08:23,220 แต่ดัชนีเป็นสตริงที่มี 0 ถึง 5 Z ผ่านที่ผ่านมา 179 00:08:23,220 --> 00:08:28,650 ดังนั้นในตอนนี้ควรเป็นภาพใหญ่ ของหน่วยความจำของคอมพิวเตอร์ของคุณ RAM ของคุณ 180 00:08:28,650 --> 00:08:32,020 ดังนั้นที่ใดที่หนึ่งโปรแกรมที่ คุณกำลังใช้งานเครื่องคอมพิวเตอร์ของคุณ 181 00:08:32,020 --> 00:08:34,780 ความต้องการที่จะจำ Zamyla ที่ใดที่หนึ่งในความทรงจำ 182 00:08:34,780 --> 00:08:36,029 ดังนั้นผมจึงสามารถมีอาสาสมัครหรือไม่? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 ใช่โปรด 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 และสิ่งที่เป็นชื่อของคุณ? 187 00:08:51,500 --> 00:08:52,410 >> คณบดีคณบดี 188 00:08:52,410 --> 00:08:53,550 >> ROB BOWDEN: คณบดี? 189 00:08:53,550 --> 00:08:54,910 ยินดีที่ได้รู้จักคุณดีน 190 00:08:54,910 --> 00:08:58,240 ดังนั้นมาที่นี่และ เรากำลังจะมีคุณวาด 191 00:08:58,240 --> 00:09:00,740 ในรูปแบบที่ดีของเราที่ดีของหน่วยความจำ 192 00:09:00,740 --> 00:09:05,950 ตอนนี้ผมชอบที่จะคิดของหน่วยความจำ เป็นหนึ่งในแถบยาวของไบต์ 193 00:09:05,950 --> 00:09:11,090 แต่สำหรับการแสดงผลเราจะ เพียงแค่ซ้ายไปขวาบนลงล่าง 194 00:09:11,090 --> 00:09:11,590 ตกลง? 195 00:09:11,590 --> 00:09:22,030 >> ดังนั้นฉันจะแสดง program-- Getstrings.c 196 00:09:22,030 --> 00:09:25,760 และเพื่อให้ทุกโปรแกรมนี้ จะขอทำสี่สาย 197 00:09:25,760 --> 00:09:28,830 จากผู้ใช้ที่มี GetString แล้วพิมพ์ 198 00:09:28,830 --> 00:09:30,950 สิ่งที่สายแรกเข้ามาเป็น 199 00:09:30,950 --> 00:09:32,840 เราไม่สนใจสองผ่านสี่ 200 00:09:32,840 --> 00:09:33,610 ตกลง. 201 00:09:33,610 --> 00:09:38,210 ดังนั้นกว่าที่นี่ now-- เมื่อ ผมคำขอ s1 แรก 202 00:09:38,210 --> 00:09:39,740 เพื่อให้คุณมีเครื่องคอมพิวเตอร์ 203 00:09:39,740 --> 00:09:41,680 และคุณมีการดำเนินการ GetString 204 00:09:41,680 --> 00:09:46,710 ดังนั้นคุณจึงขอสตริงจาก ฉันและฉันพูดว่าตกลงคณบดี 205 00:09:46,710 --> 00:09:47,900 ให้สตริง "คณบดี". 206 00:09:47,900 --> 00:09:50,300 >> ดังนั้นในบางส่วนของหน่วยความจำที่คุณ ต้องจำไว้ "คณบดี". 207 00:09:50,300 --> 00:09:52,160 เพื่อเขียนลงในหน่วยความจำที่ใดที่หนึ่ง 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 ที่สมบูรณ์แบบ 210 00:09:59,210 --> 00:09:59,880 ตกลง. 211 00:09:59,880 --> 00:10:01,740 ดังนั้นตอนนี้เรามี s2 212 00:10:01,740 --> 00:10:03,869 และ s2 เป็นไปได้ ขอให้ GetString 213 00:10:03,869 --> 00:10:05,160 ดังนั้นฉันจะใส่สตริง 214 00:10:05,160 --> 00:10:08,720 ฉันจะใส่ "ฮันนาห์." 215 00:10:08,720 --> 00:10:10,586 ดังนั้นใส่ "ฮันนาห์" อยู่ที่ไหนสักแห่งในหน่วยความจำ 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 ใช่ 218 00:10:19,360 --> 00:10:23,000 A-H 219 00:10:23,000 --> 00:10:25,550 >> ตกลงดังนั้นตอนนี้ s3 220 00:10:25,550 --> 00:10:28,380 และมันก็เป็นไปได้อีก ขอให้ GetString 221 00:10:28,380 --> 00:10:37,020 และดังนั้นตอนนี้ใส่ "มาเรีย". 222 00:10:37,020 --> 00:10:37,520 ทั้งหมดขวา 223 00:10:37,520 --> 00:10:40,980 แล้วมีคนสุดท้าย ขอให้ GetString, s4 224 00:10:40,980 --> 00:10:42,580 ดังนั้นผมไม่ทราบว่า 225 00:10:42,580 --> 00:10:45,640 วิธีการเกี่ยวกับที่เราจะไปด้วย antidisestablishmentarianism 226 00:10:45,640 --> 00:10:49,460 ดังนั้นที่ใส่ในหน่วยความจำ 227 00:10:49,460 --> 00:10:50,400 ใช่ 228 00:10:50,400 --> 00:10:53,970 ดังนั้นเพียงแค่ทำ "ร็อบ". 229 00:10:53,970 --> 00:10:54,560 >> ตกลง. 230 00:10:54,560 --> 00:10:58,410 ดังนั้นตอนนี้ explain-- ทำไม คุณออกจากช่องว่างเหล่านี้หรือไม่ 231 00:10:58,410 --> 00:11:01,340 ทำไมคุณต้องว่างเปล่านี้ พื้นที่ที่นี่ที่นี่และที่นี่? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 ใช่ 234 00:11:05,670 --> 00:11:09,450 สังเกตเห็นดังนั้นเมื่อผมไป พิมพ์ s1-- ดังนั้นหากเรา 235 00:11:09,450 --> 00:11:11,890 มี "ฮันนาห์" ทำงาน ขวาขึ้นถัดจาก "คณบดี" 236 00:11:11,890 --> 00:11:14,360 ทำอย่างไรเรารู้ว่าเมื่อ สตริง "คณบดี" จบลง? 237 00:11:14,360 --> 00:11:19,470 ดังนั้นการพิมพ์ s1 สตริงอาจจะมี เพียงแค่พิมพ์ "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 ถ้ามันไม่ได้มีเงื่อนงำใด ๆ เมื่อ "คณบดี" จริง ๆ แล้วจบลง 239 00:11:22,720 --> 00:11:23,240 >> ทั้งหมดขวา 240 00:11:23,240 --> 00:11:27,650 ดังนั้นในความทรงจำวิธีที่เราจริง เป็นตัวแทนของจุดสิ้นสุดของสตริงนี้ 241 00:11:27,650 --> 00:11:29,940 เป็นศูนย์ที่มีเครื่องหมาย 242 00:11:29,940 --> 00:11:32,620 ดังนั้นพื้นที่ตรงนี้เป็นสิ่งที่เราต้องการ 243 00:11:32,620 --> 00:11:34,040 มันควรจะเป็นศูนย์เครื่องหมาย 244 00:11:34,040 --> 00:11:37,690 นี้จะเป็นเครื่องหมายศูนย์, และนี่จะเป็นศูนย์เครื่องหมาย 245 00:11:37,690 --> 00:11:41,585 และคุณสามารถมีได้รับรางวัลยอดเยี่ยม สำหรับการเป็นอาสาสมัครที่สมบูรณ์แบบ 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 ใช้ลูกความเครียด! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> ตกลง. 250 00:11:49,700 --> 00:11:54,420 ดังนั้นเครื่องหมายตัวละครตัวนี้เป็นศูนย์ วิธีการที่เราแสดงให้เห็นจุดสิ้นสุดของสตริง 251 00:11:54,420 --> 00:11:57,120 มันเป็นวิธีที่เมื่อโปรแกรมใดก็ตาม ต้องการที่จะพิมพ์สตริง 252 00:11:57,120 --> 00:11:59,760 ก็จำได้ว่าเราได้เรียนรู้ how-- ฟังก์ชัน strlen สัปดาห์ที่ผ่านมา? 253 00:11:59,760 --> 00:12:00,940 ความยาวของสตริง? 254 00:12:00,940 --> 00:12:03,770 มันเป็นวิธีที่มีความยาวสตริงสามารถที่จะ กำหนดระยะเวลาที่เป็นสตริง 255 00:12:03,770 --> 00:12:05,810 มันก็ช่วยให้การทำซ้ำ มากกว่าตัวละคร 256 00:12:05,810 --> 00:12:08,217 จนกว่าจะพบ ศูนย์เครื่องหมายตัวอักษร 257 00:12:08,217 --> 00:12:11,050 ดังนั้นสิ่งสำคัญที่ต้องตระหนัก เกี่ยวกับศูนย์เครื่องหมายตัวอักษร 258 00:12:11,050 --> 00:12:14,950 คือมันเป็นตัวแทนของ โดยศูนย์ทั้งหมดในบิต 259 00:12:14,950 --> 00:12:18,980 ดังนั้นสังเกตเห็นว่านี่คือที่แตกต่างกัน จากตัวละครที่เป็นศูนย์ 260 00:12:18,980 --> 00:12:23,010 ดังนั้นตัวละครศูนย์ถ้าคุณจำ ในตัวอย่างที่เขาให้ในตอนท้าย 261 00:12:23,010 --> 00:12:27,360 ของการบรรยายที่แผนที่ตัวอักษร to-- เช่นแผนที่ทุนถึง 65 262 00:12:27,360 --> 00:12:29,130 แผนที่ที่จะเป็นตัวพิมพ์เล็ก 97 263 00:12:29,130 --> 00:12:30,890 ขพิมพ์เล็กจะเป็น 98 264 00:12:30,890 --> 00:12:35,220 ดังนั้นจำนวน 0 แผนที่ to-- ฉันทำไม่ได้ รู้ว่าปิดด้านบนของหัวของฉัน 265 00:12:35,220 --> 00:12:36,400 44 หรือ 45 266 00:12:36,400 --> 00:12:37,890 ที่ไหนสักแห่งในพื้นที่ที่ 267 00:12:37,890 --> 00:12:40,850 >> ดังนั้นตัวละคร 0 เป็นจำนวนจริง 268 00:12:40,850 --> 00:12:44,350 แต่ศูนย์เครื่องหมาย แผนที่ทุกศูนย์บิต 269 00:12:44,350 --> 00:12:46,380 เพื่อให้มีความแตกต่าง ระหว่างเครื่องหมายศูนย์ 270 00:12:46,380 --> 00:12:48,450 ซึ่งเราจะเรียกว่าเทอร์มิ null 271 00:12:48,450 --> 00:12:53,210 มีความแตกต่างระหว่างเป็น เครื่องหมายศูนย์และศูนย์ตัวละคร 272 00:12:53,210 --> 00:12:54,350 >> ทั้งหมดขวา 273 00:12:54,350 --> 00:12:57,520 ดังนั้นการพูดคุยอีกเล็กน้อยเกี่ยวกับสตริง 274 00:12:57,520 --> 00:13:01,470 ดังนั้นแล้วเราดูที่นี่นี้เป็นวิธีที่ มันจะออกมาวางในหน่วยความจำ 275 00:13:01,470 --> 00:13:07,940 ดังนั้นความคิดของสตริงนี้เป็นลำดับ ของ characters-- เพื่อให้คอมพิวเตอร์อย่างเป็นทางการ 276 00:13:07,940 --> 00:13:10,750 ระยะ sciency ลำดับเป็นอาร์เรย์ 277 00:13:10,750 --> 00:13:13,790 ดังนั้นเราจึงจะเรียกสตริง อาร์เรย์ของตัวอักษร 278 00:13:13,790 --> 00:13:17,770 และมีข้อมูลอื่น ๆ จริง ชนิดที่ทำให้เราสามารถสร้างอาร์เรย์จาก 279 00:13:17,770 --> 00:13:19,975 >> ดังนั้นการกระตุ้นนี้ดูตัวอย่าง 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 เราจะเรียกมันว่าฉันจะ ages0.c คัดลอกและวางแม่แบบของเรา 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 ตกลง. 284 00:13:33,410 --> 00:13:39,378 ดังนั้นในโปรแกรมนี้สิ่งที่เรา ต้องการจะทำคือคว้าอายุ 285 00:13:39,378 --> 00:13:45,160 ในสามของนักเรียนในการเรียนการสอน 286 00:13:45,160 --> 00:13:49,240 ดังนั้นเราจึงรู้ว่า int age-- และตอนนี้ฉันจะพูด 0 287 00:13:49,240 --> 00:13:53,140 ดังนั้นคุณอาจต้องการที่จะพูด age1 แต่ เพื่อวัตถุประสงค์ในการที่เราจะเห็นมากในไม่ช้า 288 00:13:53,140 --> 00:13:57,187 ฉันจะบอก int age0 เท่ากับ GetInt 289 00:13:57,187 --> 00:13:59,270 ดังนั้นสายเดียวกันกับ GetInt ที่เราได้รับใช้ฉัน 290 00:13:59,270 --> 00:14:01,561 ไม่ได้เกิดขึ้นจะได้รับการกระตุ้น พูดว่า "ให้ฉันอายุ." 291 00:14:01,561 --> 00:14:03,120 เพียง แต่ขอให้มัน 292 00:14:03,120 --> 00:14:06,510 >> และ age1 เท่ากับ GetInt 293 00:14:06,510 --> 00:14:09,600 และ int age2 เท่ากับ GetInt 294 00:14:09,600 --> 00:14:14,070 ดังนั้นอีกครั้งสามนักเรียน แต่ ในที่สุดดัชนีตัวแปร 295 00:14:14,070 --> 00:14:16,890 มี age0 ผ่าน age2 296 00:14:16,890 --> 00:14:17,550 ตกลง. 297 00:14:17,550 --> 00:14:23,960 ดังนั้นโปรแกรมนี้จะทำอะไรก็ตาม เราต้องการด้วย age0, age1 และ age2, 298 00:14:23,960 --> 00:14:27,670 แต่โปรแกรมนี้ในท้ายที่สุด ทำงานให้กับนักศึกษาสาม 299 00:14:27,670 --> 00:14:28,380 >> ตกลง. 300 00:14:28,380 --> 00:14:32,110 ดังนั้นตอนนี้สิ่งที่ถ้าผมต้องการที่สี่นักเรียน? 301 00:14:32,110 --> 00:14:36,000 ดีฉันจะต้องกลับไป เป็นรหัสของฉันเปลี่ยนความคิดเห็นที่ 302 00:14:36,000 --> 00:14:39,840 และตอนนี้เรามีอยู่ int age3 เท่ากับ GetInt 303 00:14:39,840 --> 00:14:40,610 ตกลง. 304 00:14:40,610 --> 00:14:43,660 ดังนั้นผู้ที่เห็นปัญหาที่เกิดขึ้นที่นี่? 305 00:14:43,660 --> 00:14:47,310 ปัญหาคืออะไร มีการจัดเรียงของการติดตั้งนี้หรือไม่? 306 00:14:47,310 --> 00:14:47,810 ใช่ 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 ใช่ 309 00:14:53,610 --> 00:14:56,360 ดังนั้นเราจึงกำลังสร้าง ตัวแปรสำหรับนักเรียนแต่ละคน 310 00:14:56,360 --> 00:15:00,140 ตอนนี้ที่ทำงาน แต่ ในที่สุดสิ่งที่ถ้าตอนนี้ผม 311 00:15:00,140 --> 00:15:06,500 พูดว่า "ผมต้องการที่จะคว้าอายุ แปดหรือ 16 นักเรียนนักศึกษา 312 00:15:06,500 --> 00:15:11,340 หรือ แต่นักเรียนจำนวนมากของ ร้อยของนักเรียนในการ CS50 313 00:15:11,340 --> 00:15:16,750 หรือหลายพันคนในมหาวิทยาลัย หรือพันล้านคนในโลก? 314 00:15:16,750 --> 00:15:19,130 ดังนั้นในท้ายที่สุดนี้ไม่ยั่งยืน 315 00:15:19,130 --> 00:15:21,990 เวลาที่คุณเห็นตัวเองการคัดลอก และวางรหัสเช่นนี้ 316 00:15:21,990 --> 00:15:25,050 คุณมักจะรู้สึก ว่ามีวิธีที่ดีกว่า 317 00:15:25,050 --> 00:15:31,290 >> ดังนั้นนี่คือที่เราแนะนำ การประกาศอาร์เรย์ 318 00:15:31,290 --> 00:15:34,564 ดังนั้นเมื่อคุณประกาศอาร์เรย์ นี่คือสิ่งที่รูปแบบทั่วไป 319 00:15:34,564 --> 00:15:35,480 เป็นไปได้ที่มีลักษณะเหมือน 320 00:15:35,480 --> 00:15:36,664 เรากำลังจะพูดประเภท 321 00:15:36,664 --> 00:15:38,830 และจากนั้นเรากำลังจะไป ให้ชื่อของอาร์เรย์ที่ 322 00:15:38,830 --> 00:15:41,150 เช่นเดียวกับที่เรากำหนดตัวแปรใดก็ตาม 323 00:15:41,150 --> 00:15:43,980 และแล้วในที่สุดเราจะใช้ สัญกรณ์วงเล็บนี้อีกครั้ง 324 00:15:43,980 --> 00:15:47,480 แต่ในบริบทที่แตกต่างจาก วิธีการที่เราได้ใช้มันก่อนหน้านี้ 325 00:15:47,480 --> 00:15:51,860 >> ดังนั้นที่นี่ดูเหมือนจะเป็นปกติ การประกาศตัวแปรที่เราได้เห็น 326 00:15:51,860 --> 00:15:54,890 ดังนั้นเราจึงได้เห็น int x ลำไส้ใหญ่กึ่งก่อน 327 00:15:54,890 --> 00:16:00,020 ดีตอนนี้เราอาจจะเห็นบางสิ่งบางอย่าง เช่น int x วงเล็บ 5 328 00:16:00,020 --> 00:16:04,020 และวางความคิดเข้ามาในนี้ โปรแกรม GetInt ที่เรา have-- 329 00:16:04,020 --> 00:16:08,850 เพื่อให้เราสามารถดำเนินการ นี้ในทางเดียวกัน 330 00:16:08,850 --> 00:16:13,630 >> สมมติว่าในซีเรามีแนวโน้มที่จะใช้ n เป็นจำนวนของบางสิ่งบางอย่าง 331 00:16:13,630 --> 00:16:16,150 ดังนั้นที่นี่เรากำลังจะไป เก็บสี่นักเรียน 332 00:16:16,150 --> 00:16:25,960 และตอนนี้เราสามารถพูดได้อายุ int วงเล็บ n-- ได้ค่อนข้างได้รับมัน yet-- 333 00:16:25,960 --> 00:16:32,210 ที่จะประกาศอาร์เรย์ของสี่นักเรียน 334 00:16:32,210 --> 00:16:38,050 ดังนั้นวิธีนี้จะมองใน หน่วยความจำจะคล้ายกับนี้ 335 00:16:38,050 --> 00:16:39,570 ล้างนี้ 336 00:16:39,570 --> 00:16:46,606 และเรากำลังจะมีที่ใดที่หนึ่ง ใน memory-- ฉันจะใส่นี้มีขึ้น 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> ดังนั้นที่ใดที่หนึ่งในความทรงจำ 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 หนึ่งสองสามสี่. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 เรามีสี่จำนวนเต็มในแถว สำหรับอาร์เรย์ของจำนวนเต็มสี่นี้ 343 00:17:09,849 --> 00:17:13,820 ดังนั้นในขณะนี้สิ่งที่เป็น ขนาดของหนึ่งในกล่องเหล่านี้หรือไม่ 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 ใช่ 346 00:17:17,690 --> 00:17:18,390 มันเป็นสี่ไบต์ 347 00:17:18,390 --> 00:17:19,690 มันเป็น 32 บิต 348 00:17:19,690 --> 00:17:22,310 ดังนั้นตอนนี้จะแตกต่าง จากแถวที่เรา 349 00:17:22,310 --> 00:17:24,020 เห็นก่อนหน้านี้อาเรย์ของตัวละคร 350 00:17:24,020 --> 00:17:28,540 ในสตริงแต่ละกล่องเพียงหนึ่งไบต์ เพราะเป็นตัวละครที่เป็นเพียงหนึ่งไบต์ 351 00:17:28,540 --> 00:17:32,170 แต่กับอาร์เรย์ของจำนวนเต็มแต่ละ กล่องจะต้องมีสี่ไบต์ในการสั่งซื้อ 352 00:17:32,170 --> 00:17:34,060 เพื่อให้พอดีกับจำนวนเต็มทั้งหมด 353 00:17:34,060 --> 00:17:37,197 ดังนั้นนี่คือสิ่งที่อาเรย์ของ สี่ ints จะมีลักษณะ 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> และจากนั้นก็กลับไปที่รหัส 356 00:17:43,870 --> 00:17:47,460 ตอนนี้เราต้องการในการจัดเก็บจริง จำนวนเต็มเป็น array ที่ 357 00:17:47,460 --> 00:17:53,470 ดังนั้นตอนนี้เป็นอย่างมากมาก รูปแบบทั่วไปที่จะในบางจุด 358 00:17:53,470 --> 00:17:54,680 กลายเป็นหน่วยความจำของกล้ามเนื้อ 359 00:17:54,680 --> 00:17:56,710 ดังนั้นฉัน int เท่ากับ 0 360 00:17:56,710 --> 00:17:57,940 ฉันน้อยกว่า n 361 00:17:57,940 --> 00:18:01,850 ฉันบวกบวก 362 00:18:01,850 --> 00:18:05,790 วงเล็บอายุเท่ากับฉัน GetInt 363 00:18:05,790 --> 00:18:15,100 >> ดังนั้นนี้ห่วงรูปแบบนี้ คุณควรจะได้รับใช้มากในการ 364 00:18:15,100 --> 00:18:20,010 ดังนั้นนี่คือโดยทั่วไปวิธีการที่เราจะ ย้ำกว่าเกือบอาร์เรย์ใด ๆ 365 00:18:20,010 --> 00:18:23,690 ตอนนี้สังเกตเห็นการจัดเรียงของนี้ อธิบายว่าทำไมจากจุดเริ่มต้น 366 00:18:23,690 --> 00:18:29,870 เราไม่ได้มีวงที่จะให้ int ฉันมีค่าเท่ากับ 1, ฉันน้อยกว่าหรือเท่ากับ 10 367 00:18:29,870 --> 00:18:34,200 เหตุผลที่ถูกที่เริ่มต้นจาก ศูนย์ทำให้การทำงานนี้ได้ดีกับอาร์เรย์ 368 00:18:34,200 --> 00:18:36,270 ดังนั้นอาร์เรย์จะเป็นศูนย์การจัดทำดัชนี 369 00:18:36,270 --> 00:18:40,360 ถ้าอาร์เรย์นี้เป็นระยะเวลา 4 ดัชนีอยู่ที่ 0 ถึง 3 370 00:18:40,360 --> 00:18:42,880 >> ดังนั้นผ่านครั้งแรก ทวนของวงนี้ 371 00:18:42,880 --> 00:18:49,930 เรากำลังจะได้รับการตั้งค่าอายุ วงเล็บ 0 เท่ากับการเรียกร้องให้ GetInt 372 00:18:49,930 --> 00:18:52,440 ดังนั้นสิ่งที่ฉันเกิดขึ้น ที่จะเข้าสู่ที่แป้นพิมพ์ 373 00:18:52,440 --> 00:18:56,970 ในการส่งผ่านที่สองเรา การตั้งค่า age1 เท่ากับ GetInt 374 00:18:56,970 --> 00:18:58,230 ผ่านสาม age2 375 00:18:58,230 --> 00:18:59,880 รอบชิงชนะเลิศผ่าน age3 376 00:18:59,880 --> 00:19:05,750 ดังนั้นหากในครั้งแรกผ่านของวง ฉันใส่หมายเลข 4 ที่แป้นพิมพ์ 377 00:19:05,750 --> 00:19:07,740 แล้วเราจะใส่ 4 ที่นี่ 378 00:19:07,740 --> 00:19:11,470 ถ้าในการส่งผ่านที่สองผมใส่ 50 เราจะใส่ 50 ที่นี่ 379 00:19:11,470 --> 00:19:15,180 เมื่อวันที่ผ่านสามฉันอาจ เข้าสู่เชิงลบ 1 ลบ 1, 380 00:19:15,180 --> 00:19:21,810 และแล้วในที่สุดถ้าเราเข้าไป 0-- และ ตอนนี้จำได้ว่านี่คือดัชนีสาม 381 00:19:21,810 --> 00:19:25,350 >> หลังจากที่เรากลับมาห่วงฉันเป็น จะได้รับการเพิ่มขึ้นถึง 4 382 00:19:25,350 --> 00:19:27,770 ฉันจะไม่น้อยกว่า n ซึ่งเป็น 4 383 00:19:27,770 --> 00:19:29,840 และเราแยกออกจากวง 384 00:19:29,840 --> 00:19:32,578 ดังนั้นสิ่งที่จะผิดกับเรื่องนี้? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [ไม่ได้ยิน] 387 00:19:38,729 --> 00:19:39,604 ผู้ชม: [ไม่ได้ยิน] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> ใช่ 390 00:19:46,400 --> 00:19:51,550 ดังนั้นอาร์เรย์มีเพียงสี่สถานที่ ซึ่งหมายความว่าในขณะที่ดัชนี 0 ถึง 3 391 00:19:51,550 --> 00:19:55,630 ดังนั้นถ้าเป็นกรณีนี้ผมจะ ใช้เวลาในการมูลค่า 4 ในบางจุด 392 00:19:55,630 --> 00:20:00,910 วงเล็บอายุ 4 จะได้รับการตั้งค่า สิ่งที่เกิดขึ้นเป็นมากกว่าที่นี่ 393 00:20:00,910 --> 00:20:02,920 กับสิ่งที่ฉันต้องบอกว่าใส่ 6 394 00:20:02,920 --> 00:20:05,010 ที่จะได้รับการตั้งค่านี้ถึง 6 395 00:20:05,010 --> 00:20:06,560 >> แต่เราไม่ทราบว่ามีอะไรมากกว่าที่นี่ 396 00:20:06,560 --> 00:20:08,836 นี้ไม่ได้เป็นหน่วยความจำ ที่เรามีการเข้าถึง 397 00:20:08,836 --> 00:20:10,710 ดังนั้นถ้าคุณจำได้จาก การบรรยายก่อนหน้านี้ 398 00:20:10,710 --> 00:20:14,350 เขาได้รับการพิมพ์ออกค่า Zamyla และ บางจุดที่เขาตีการแบ่งส่วนนี้ 399 00:20:14,350 --> 00:20:17,990 ความผิด ดังนั้นคุณอาจจะได้เห็น ความผิดพลาดของการแบ่งส่วนมากเท่าที่คุณ 400 00:20:17,990 --> 00:20:20,530 การดำเนินการบางส่วนของปัญหาชุด 401 00:20:20,530 --> 00:20:24,950 แต่นี้เป็นหนึ่งในวิธีการที่ คุณสามารถพบการแบ่งส่วน 402 00:20:24,950 --> 00:20:28,540 ความผิดพลาดเมื่อคุณเริ่มต้นการเข้าถึง หน่วยความจำในรูปแบบที่คุณไม่ควรจะ 403 00:20:28,540 --> 00:20:34,117 ดังนั้นเราจึงไม่ได้มีการเข้าถึง สถานที่นี้และนี่คือข้อผิดพลาด 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> ดังนั้นนี่จะดีกว่า 406 00:20:40,190 --> 00:20:45,820 ตอนนี้ยังคงมีขนาดเล็ก ปัญหากับรหัสนี้ 407 00:20:45,820 --> 00:20:50,720 และที่พื้นว่าเรา ยังคงติดอยู่ที่สี่นักเรียน 408 00:20:50,720 --> 00:20:52,940 ตอนนี้ถ้าฉันต้องการใช้แปดนักเรียนตกลง 409 00:20:52,940 --> 00:20:54,350 มันไม่ได้ว่าข้อตกลงที่มีขนาดใหญ่ 410 00:20:54,350 --> 00:20:58,120 ฉันสามารถไปในการเปลี่ยนแปลง แสดงความคิดเห็นและการเปลี่ยนแปลง n 411 00:20:58,120 --> 00:20:59,760 ตอนนี้จะทำงานร่วมกับแปดนักเรียน 412 00:20:59,760 --> 00:21:02,190 ถ้าฉันรวบรวมนี้และเรียกใช้ นี้ก็จะแสดง me-- 413 00:21:02,190 --> 00:21:07,870 ก็จะขอเลขแปด นักเรียนและมันก็จะทำงาน 414 00:21:07,870 --> 00:21:11,850 แต่ก็น้อยกว่าที่เหมาะที่จะต้อง คอมไพล์โปรแกรมทุกครั้งเดียว 415 00:21:11,850 --> 00:21:15,960 ฉันต้องการที่จะเปลี่ยนจำนวนของนักเรียน ที่ฉันต้องการที่จะเข้าสู่วัยสำหรับ 416 00:21:15,960 --> 00:21:22,990 >> ดังนั้นการปรับปรุงขั้นสุดท้ายเกี่ยวกับ นี้ในขณะที่เราจะเห็น here-- เรา 417 00:21:22,990 --> 00:21:26,177 จะขอหมายเลขของผู้คน 418 00:21:26,177 --> 00:21:28,010 ที่นี่เรามีจำนวนมาก ของผู้คนในห้องพัก 419 00:21:28,010 --> 00:21:29,880 หรือวัยใด ๆ ของคนที่อยู่ในห้องพัก 420 00:21:29,880 --> 00:21:33,300 แต่เรากำลังจะขอหมายเลข ของผู้คนในห้องพักจากผู้ใช้ 421 00:21:33,300 --> 00:21:36,171 ดังนั้นนี่คือสิ่งที่ต้องทำเหมือนกันในขณะที่ ห่วงที่เราเคยเห็นมาก่อน 422 00:21:36,171 --> 00:21:37,920 ก็เหมือนกันแน่นอน ทำในขณะที่ห่วงว่าคุณ 423 00:21:37,920 --> 00:21:40,050 อาจจะมีการดำเนินการเกี่ยวกับปัญหาการตั้งค่า 424 00:21:40,050 --> 00:21:43,102 ดังนั้นตราบใดที่พวกเขากำลัง ป้อน n น้อยกว่า 1, 425 00:21:43,102 --> 00:21:45,310 จึงมีได้เป็นที่ อย่างน้อยหนึ่งคนในห้องพัก 426 00:21:45,310 --> 00:21:47,407 ตราบใดที่พวกเขากำลัง ป้อน n น้อยกว่า 1, 427 00:21:47,407 --> 00:21:48,990 แล้วเรากำลังจะขอให้อีกครั้ง 428 00:21:48,990 --> 00:21:50,906 กรุณาใส่ตัวเลข ของผู้คนในห้องพัก 429 00:21:50,906 --> 00:21:53,550 ตอนนี้เมื่อเรามีจำนวน ของผู้คนใน room-- 430 00:21:53,550 --> 00:21:58,020 ดังนั้นผมอาจจะใส่ว่ามี 200 คนในห้องนี้ 431 00:21:58,020 --> 00:22:05,480 จากนั้นก็ลงที่นี่เรากำลังจะมา และประกาศอาร์เรย์ขนาด 200 432 00:22:05,480 --> 00:22:10,220 เรากำลังประกาศอาร์เรย์ที่ ใหญ่พอที่จะถือ 200 ทุกเพศทุกวัย 433 00:22:10,220 --> 00:22:15,370 ลงมาก็เป็นห่วง ที่คุณจะได้รับใช้มากในการ 434 00:22:15,370 --> 00:22:19,490 ดังนั้น iterating มากกว่าอาร์เรย์นี้ มอบหมายให้แต่ละสถานที่ 435 00:22:19,490 --> 00:22:23,020 ในอาร์เรย์ที่เป็นจำนวนเต็มและ ท้ายที่สุดแล้วนี่เรา 436 00:22:23,020 --> 00:22:28,340 แค่ตัวอย่างของการทำซ้ำ มากกว่าอาร์เรย์ที่ไม่ได้ที่จะกำหนดค่า 437 00:22:28,340 --> 00:22:30,150 แต่การเข้าถึงค่า 438 00:22:30,150 --> 00:22:33,810 >> ดังนั้นที่นี่เราจะเห็นว่าเรา จะพูดว่าปีต่อจากนี้ 439 00:22:33,810 --> 00:22:40,470 คน% ฉันจะเป็นฉัน% ปีเก่า ที่ฉัน% แรกคือผมบวก 1 440 00:22:40,470 --> 00:22:43,010 ดังนั้นฉันเป็นตัวแปรดัชนีนี้ 441 00:22:43,010 --> 00:22:49,420 และฉัน% ที่สองคือจะเป็น ค่าที่เก็บไว้ในอาร์เรย์บวก 1 ทุกเพศทุกวัย 442 00:22:49,420 --> 00:22:54,217 ดังนั้นบวก 1 นี้เป็นเพียงเพราะเรา saying-- บวก 1 นี้อายุผมบวก 1 443 00:22:54,217 --> 00:22:57,050 บวก 1 นี้เป็นเพียงเพราะเรา ว่าปีนับจากนี้คนที่ 444 00:22:57,050 --> 00:22:58,280 จะเก่า 445 00:22:58,280 --> 00:23:01,080 >> ดังนั้นทำไมฉันนี้บวก 1? 446 00:23:01,080 --> 00:23:04,064 ทำไมเรามีบวก 1 มี? 447 00:23:04,064 --> 00:23:04,564 ใช่ 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 ใช่ 450 00:23:07,930 --> 00:23:10,510 ดังนั้นจำอาร์เรย์จะเป็นศูนย์การจัดทำดัชนี 451 00:23:10,510 --> 00:23:14,840 ดังนั้นหากเรากำลังพิมพ์นี้ออกมา คนที่เพียงแค่อ่านออก 452 00:23:14,840 --> 00:23:19,380 แล้วอาจจะเป็นพวกเขาต้องการที่จะเห็นบางสิ่งบางอย่าง เหมือนคนหนึ่งจำนวนหนึ่งคน 453 00:23:19,380 --> 00:23:21,160 จะอายุ 20 ปี 454 00:23:21,160 --> 00:23:23,570 จำนวนคนที่สองจะอายุ 15 ปี 455 00:23:23,570 --> 00:23:27,420 พวกเขาไม่ต้องการเห็นคน จำนวนศูนย์คือ 15 ปี 456 00:23:27,420 --> 00:23:36,460 >> ดังนั้นการรวบรวมนี้และเพียงแค่เห็นสิ่งที่ มันดู like-- สร้างพื้นที่บางส่วน 457 00:23:36,460 --> 00:23:43,560 ทำให้ทุกเพศทุกวัย compiles 458 00:23:43,560 --> 00:23:45,080 วิ่งทุกเพศทุกวัย 459 00:23:45,080 --> 00:23:46,580 เราเห็นผู้คนจำนวนมากในห้องพัก 460 00:23:46,580 --> 00:23:48,850 ดังนั้นผมจะบอกว่ามี คนสามคนในห้องพัก 461 00:23:48,850 --> 00:23:54,000 อายุจำนวนหนึ่งคน สมมติว่า 15, 20, 25 462 00:23:54,000 --> 00:23:59,680 และตอนนี้ฉันจะบอกว่าปีจาก ตอนนี้พวกเขาจะเป็น 16, 21, 26 463 00:23:59,680 --> 00:24:02,900 ลองมาดูกันว่างานนี้ด้วย n ที่ไม่เท่ากับ 3 464 00:24:02,900 --> 00:24:07,940 ดังนั้นถ้าผมบอกว่าผู้คนจำนวนมากคือ 5, หนึ่ง สองสามสองหนึ่งปีนับจากนี้ 465 00:24:07,940 --> 00:24:11,170 พวกเขาจะมีสองสาม สี่สามสองปี 466 00:24:11,170 --> 00:24:16,500 ดังนั้นผมจึงอาจเป็นเพียงแค่ ได้อย่างง่ายดาย n เป็น 10,000 467 00:24:16,500 --> 00:24:21,270 ตอนนี้ผมจะนั่งอยู่ที่นี่สำหรับค่อนข้าง ในขณะที่ทุกเพศทุกวัยเข้ามา แต่งานนี้ 468 00:24:21,270 --> 00:24:26,000 >> ดังนั้นตอนนี้ในความทรงจำที่เราอยู่ที่ไหนสักแห่ง มีอาร์เรย์ของขนาด 10,000 ที่ 469 00:24:26,000 --> 00:24:28,830 ในที่สุดจึง 40,000 ไบต์เนื่องจากมี 470 00:24:28,830 --> 00:24:31,222 สี่ไบต์สำหรับแต่ละจำนวนเต็มเหล่านั้น 471 00:24:31,222 --> 00:24:33,180 ดังนั้นจึงมีอาร์เรย์ของ ขนาด 10,000 ที่เราสามารถทำได้ 472 00:24:33,180 --> 00:24:36,201 เก็บทุกเพศทุกวัยของผู้ที่ 10,000 คน 473 00:24:36,201 --> 00:24:36,700 ทั้งหมดขวา 474 00:24:36,700 --> 00:24:40,070 คำถามใด ๆ เกี่ยวกับเรื่องนี้? 475 00:24:40,070 --> 00:24:41,892 ใช่ 476 00:24:41,892 --> 00:24:43,350 เกิดอะไรขึ้นถ้าคุณให้จำนวนลบ? 477 00:24:43,350 --> 00:24:44,870 ลองมาดูสิ่งที่เกิดขึ้น 478 00:24:44,870 --> 00:24:49,320 ดังนั้นในจำนวน case-- นี้โดยเฉพาะ ของผู้คนในห้องพัก, เชิงลบอย่างใดอย่างหนึ่ง 479 00:24:49,320 --> 00:24:52,580 มันปฏิเสธว่า เพราะที่นี่เราเกิดขึ้น 480 00:24:52,580 --> 00:24:57,180 ที่จะจัดการกับความจริงที่ว่าถ้า n เป็น น้อยกว่าหนึ่งที่เรากำลังจะไปถามอีก 481 00:24:57,180 --> 00:25:01,780 ถ้าคุณพยายามที่จะประกาศ อาร์เรย์ขนาดลบ 482 00:25:01,780 --> 00:25:03,950 โดยทั่วไปจะไม่ทำงาน 483 00:25:03,950 --> 00:25:05,570 >> ดังนั้นลอง 484 00:25:05,570 --> 00:25:08,000 ลองไม่สนใจสิ่งที่ ค่าที่พวกเขาสำหรับการป้อนข้อมูล n 485 00:25:08,000 --> 00:25:10,571 และเพียงแค่บอกว่าทุกเพศทุกวัย int เชิงลบอย่างใดอย่างหนึ่ง 486 00:25:10,571 --> 00:25:12,410 ลองมาดูว่ามันยัง compiles 487 00:25:12,410 --> 00:25:14,100 ฉันไม่แน่ใจ. 488 00:25:14,100 --> 00:25:14,920 เลขที่ 489 00:25:14,920 --> 00:25:18,280 ทุกเพศทุกวัยดังนั้นการประกาศเป็น อาร์เรย์ที่มีขนาดเชิงลบ 490 00:25:18,280 --> 00:25:22,540 ล่วงหน้าดังนั้นจึงตระหนักถึงอาร์เรย์ไม่สามารถ จะมีขนาดเชิงลบและปฏิเสธมัน 491 00:25:22,540 --> 00:25:26,840 ตอนนี้ถ้าเราไม่ได้จัดการ นี้วงในขณะที่ทำอย่างถูกต้อง 492 00:25:26,840 --> 00:25:28,810 ถ้าเราไม่ได้ตรวจสอบ ถ้า n มีค่าน้อยกว่า 1- 493 00:25:28,810 --> 00:25:32,690 สมมติว่าเราเพียงแค่ ไม่ได้มีที่ทั้งหมดนี้ 494 00:25:32,690 --> 00:25:35,940 และแทนที่จะเราก็คว้าจำนวนเต็ม 495 00:25:35,940 --> 00:25:40,710 ไม่ว่าสิ่งที่เป็นจำนวนเต็มไม่มี เราประกาศอาร์เรย์ของขนาดที่ 496 00:25:40,710 --> 00:25:44,250 >> ดังนั้นคอมไพเลอร์ไม่สามารถ อาจจะบ่นในขณะนี้ 497 00:25:44,250 --> 00:25:48,780 ถ้าผมรวบรวม this-- ดังนั้นจึงไม่สามารถบ่น 498 00:25:48,780 --> 00:25:51,480 เพราะมันไม่สามารถรู้ว่าฉัน จะป้อนหมายเลขลบ 499 00:25:51,480 --> 00:25:52,550 ซึ่งอาจจะไม่ถูกต้อง 500 00:25:52,550 --> 00:25:54,633 สำหรับทั้งหมดก็รู้ฉันอาจ ป้อนหมายเลขบวก 501 00:25:54,633 --> 00:25:56,000 ซึ่งเป็นที่ถูกต้องสมบูรณ์ 502 00:25:56,000 --> 00:26:01,090 ดังนั้นผมจึงคิดว่าฉันใส่ในเชิงลบ 1 คนในห้องพัก, ความผิดส่วน 503 00:26:01,090 --> 00:26:06,040 >> ดังนั้นตกลง 504 00:26:06,040 --> 00:26:13,160 ดังนั้นขอเพิ่มกลับเพียงแค่นี้ ให้มันสิ่งที่มันเดิม 505 00:26:13,160 --> 00:26:15,640 เพื่อให้ทุกเพศทุกวัย 506 00:26:15,640 --> 00:26:18,120 ตอนนี้ถ้าผมต้องการที่จะลอง เชิงลบ age-- จึงขอ 507 00:26:18,120 --> 00:26:19,710 บอกว่ามีคนห้าคนในห้องพัก 508 00:26:19,710 --> 00:26:23,180 อายุจำนวนหนึ่งคน เป็นลบ 4 คนสาม 509 00:26:23,180 --> 00:26:26,500 เป็นศูนย์คน three-- ตกลง 510 00:26:26,500 --> 00:26:29,850 ดังนั้นที่นี่ปีนับจากนี้จำนวนคน หนึ่งจะเป็นค่าลบ 3 ปี 511 00:26:29,850 --> 00:26:32,830 ดังนั้นอาจจะไม่ได้ทำให้รู้สึก 512 00:26:32,830 --> 00:26:37,220 แต่นั่นเป็นเพียงเพราะมอง รหัสทั้งหมดที่เรากำลังทำ 513 00:26:37,220 --> 00:26:40,260 ขอ GetInt 514 00:26:40,260 --> 00:26:44,110 >> ตอนนี้ถ้าเราได้มี ฟังก์ชั่น GetPositiveInt 515 00:26:44,110 --> 00:26:49,690 หรือเราเพิ่งทำเพียงแค่นี้ การเรียงลำดับของวงในขณะเดียวกันลงที่นั่น 516 00:26:49,690 --> 00:26:52,340 แล้วนี้จะทำงานได้ดีอย่างสมบูรณ์ 517 00:26:52,340 --> 00:26:54,200 แต่ในการนี​​้โดยเฉพาะ กรณีที่เราก็ไม่ได้ทำ 518 00:26:54,200 --> 00:26:57,772 เกิดขึ้นที่จะจัดการค่าลบ 519 00:26:57,772 --> 00:26:59,147 คำถามใด ๆ อื่น ๆ เกี่ยวกับอาร์เรย์? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 ตกลง. 522 00:27:03,250 --> 00:27:09,380 >> ดังนั้นเราจึงได้เห็นตอนนี้อาร์เรย์ 523 00:27:09,380 --> 00:27:12,500 และเรากำลังจะต้องใช้ นี้อาร์กิวเมนต์บรรทัดคำสั่ง 524 00:27:12,500 --> 00:27:14,680 ดังนั้นในการกำหนดปัญหา two-- ผมรู้ว่าหลายท่าน 525 00:27:14,680 --> 00:27:18,040 อาจจะยังคงทำงานในชุดปัญหา หนึ่ง แต่ปัญหาที่เกิดขึ้นตั้งสองกำลังจะมาถึง 526 00:27:18,040 --> 00:27:22,260 ในปัญหาที่เกิดขึ้นตั้งสองคุณกำลังจะไป จะต้องมีการจัดการกับสตริงอาร์เรย์ 527 00:27:22,260 --> 00:27:23,950 และการขัดแย้งบรรทัดคำสั่ง 528 00:27:23,950 --> 00:27:26,270 >> ดังนั้นสิ่งที่เป็นอาร์กิวเมนต์บรรทัดคำสั่ง? 529 00:27:26,270 --> 00:27:29,570 ตอนนี้คุณสามารถดูลงที่นี่ ทีเซอร์เล็ก ๆ น้อย ๆ ว่าสิ่งที่ 530 00:27:29,570 --> 00:27:30,950 จะเกิดขึ้น 531 00:27:30,950 --> 00:27:32,950 เราเห็น int หลัก argc อิงค์, วงเล็บ argv สตริง 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 ดังนั้นก่อนลองที่จะตีความ สิ่งที่พยายามที่จะพูด 534 00:27:38,130 --> 00:27:40,800 ตอนนี้ตกลง 535 00:27:40,800 --> 00:27:44,637 >> ดังนั้นที่บรรทัดคำสั่งที่คุณควรจะ รับใช้บางส่วนของคำสั่งเหล่านี้ 536 00:27:44,637 --> 00:27:48,580 ในขณะนี้และคุณอาจจะได้ทำงาน ซีดีใน terminal ก่อน 537 00:27:48,580 --> 00:27:52,100 ดังนั้นถ้าเราบอกว่าซีดี pset1, คุณรู้ไหมว่าที่ควร 538 00:27:52,100 --> 00:27:55,050 จะมีการเปลี่ยนแปลงลงในไดเรกทอรี pset1 539 00:27:55,050 --> 00:27:59,120 >> ตอนนี้สังเกตเห็นว่าคุณไม่เคย เขียนโปรแกรมเช่นนี้มาก่อน 540 00:27:59,120 --> 00:28:03,120 แต่ละโปรแกรมที่คุณเขียน ที่คุณจะเรียกใช้การพูด, เฉือนดอทมาริโอ 541 00:28:03,120 --> 00:28:06,779 จุดเฉือนโลภแล้ว อาจจะแจ้งให้คุณสำหรับการป้อนข้อมูล 542 00:28:06,779 --> 00:28:08,570 ตอนนี้นั่นไม่ใช่สิ่งที่ เปลี่ยนไดเรกทอรีไม่ 543 00:28:08,570 --> 00:28:12,770 เมื่อคุณเรียกใช้แผ่นซีดีก็ไม่ได้แล้วพูดว่า ไดเรกทอรีที่คุณต้องการลงในแผ่นซีดี? 544 00:28:12,770 --> 00:28:17,200 แต่คุณเพียงแค่พูดว่า pset1 ซีดีและ มันก็จะเข้าสู่ไดเรกทอรี pset1 545 00:28:17,200 --> 00:28:20,430 >> ดังนั้นในทำนองเดียวกันเรามีตัวอย่างอื่น ๆ 546 00:28:20,430 --> 00:28:21,540 ทำให้สวัสดี 547 00:28:21,540 --> 00:28:25,760 เมื่อคุณเรียกใช้ให้มันไม่ได้แล้วพูดว่า โปรแกรมที่คุณต้องการจะทำ? 548 00:28:25,760 --> 00:28:29,620 คุณเพียงแค่บอกว่าที่ บรรทัดคำสั่งให้สวัสดี 549 00:28:29,620 --> 00:28:31,060 >> ย้ายเป็นอีกตัวอย่างหนึ่ง 550 00:28:31,060 --> 00:28:34,840 หนึ่งนี้เราจะย้าย mario.c ยื่นขึ้นหนึ่งไดเรกทอรี 551 00:28:34,840 --> 00:28:38,060 ดังนั้นตอนนี้เรารู้ว่ามีตัวอย่างนี้ เรากำลังผ่านจริงๆสองขัดแย้ง 552 00:28:38,060 --> 00:28:42,090 มี mario.c เป็นอาร์กิวเมนต์แรก และ dot dot เป็นอาร์กิวเมนต์ที่สอง 553 00:28:42,090 --> 00:28:46,140 และจากนั้นเมื่อคุณทำงานให้คุณ เห็นว่าคำสั่งนานจริงๆ line-- 554 00:28:46,140 --> 00:28:50,580 คำสั่งที่นานจริงๆ พิมพ์ที่บรรทัดคำสั่ง 555 00:28:50,580 --> 00:28:53,590 เพื่อให้ยาว command-- นี้ เป็นเพียงส่วนหนึ่งที่สั้นของมัน 556 00:28:53,590 --> 00:28:56,090 แต่ตอนนี้เรามีสาม อาร์กิวเมนต์บรรทัดคำสั่ง 557 00:28:56,090 --> 00:28:59,750 รีบจุดศูนย์ทักทายและ hello.c 558 00:28:59,750 --> 00:29:03,497 >> ดังนั้นเหล่านี้เป็นบรรทัดคำสั่ง ข้อโต้แย้งข้อโต้แย้ง 559 00:29:03,497 --> 00:29:05,580 ที่คุณผ่านที่ บรรทัดคำสั่งเพื่อที่จะ 560 00:29:05,580 --> 00:29:08,680 ไม่จำเป็นต้องได้รับแจ้ง เมื่อคุณเรียกใช้โปรแกรม 561 00:29:08,680 --> 00:29:13,090 มันจะทำลายหากเมื่อ คุณวิ่งเสียงดังกราวก็กล่าวว่า "ต​​กลง 562 00:29:13,090 --> 00:29:15,630 ซึ่ง program-- ที่ ไฟล์ที่คุณรวบรวม? 563 00:29:15,630 --> 00:29:17,010 hello.c 564 00:29:17,010 --> 00:29:19,440 สิ่งที่คุณจะธง ชอบที่จะใส่? รีบ o 565 00:29:19,440 --> 00:29:21,190 สิ่งที่คุณต้องการ ไฟล์ที่จะเรียกว่า? 566 00:29:21,190 --> 00:29:21,690 สวัสดี. 567 00:29:21,690 --> 00:29:25,290 ไม่มีคุณเพียงแค่ใช้เสียงดังกราว รีบ o สวัสดี hello.c 568 00:29:25,290 --> 00:29:28,820 >> ดังนั้นมองกลับไปที่นี้ 569 00:29:28,820 --> 00:29:32,920 ตอนนี้ argc-- argc นับเป็นอาร์กิวเมนต์ 570 00:29:32,920 --> 00:29:36,620 มันเป็นจำนวนบรรทัดคำสั่ง ข้อโต้แย้งที่เข้ามาที่บรรทัดคำสั่ง 571 00:29:36,620 --> 00:29:39,720 ดี argv-- ทางเทคนิค โวย่อมาจากเวกเตอร์ 572 00:29:39,720 --> 00:29:41,460 ซึ่งโดยทั่วไปหมายถึงอาร์เรย์ 573 00:29:41,460 --> 00:29:42,680 แต่คุณสามารถที่จะไม่สนใจ 574 00:29:42,680 --> 00:29:47,540 Argv-- เรามี argv สตริง เพื่อให้วงเล็บ argv สตริง 575 00:29:47,540 --> 00:29:50,150 ดังนั้นนี่คือรูปแบบของผู้อื่น วงเล็บคุณยังไม่ได้เห็นมาก่อน 576 00:29:50,150 --> 00:29:52,300 ดังนั้นเราจึงได้เห็นวงเล็บ สัญกรณ์เมื่อเราได้กล่าวว่า 577 00:29:52,300 --> 00:29:53,970 เหมือนสตริง s เท่ากับ Zamyla 578 00:29:53,970 --> 00:29:56,910 วงเล็บ s 0 เข้าถึงตัวละครซี 579 00:29:56,910 --> 00:30:00,720 >> เราได้เห็นวงเล็บเมื่อ เรากล่าวว่าทุกเพศทุกวัย int วงเล็บ 5 580 00:30:00,720 --> 00:30:03,160 ที่ประกาศอาร์เรย์ของขนาด 5 581 00:30:03,160 --> 00:30:06,280 ดังนั้นนี่คือรุ่นที่ วงเล็บเรายังไม่ได้เห็นมาก่อน 582 00:30:06,280 --> 00:30:09,630 ดังนั้นการจัดเรียงของ argv สายนี้ว่า จะคุ้นเคยอย่างสมบูรณ์ 583 00:30:09,630 --> 00:30:12,050 ว่ามันก็จะเป็นสตริง 584 00:30:12,050 --> 00:30:14,520 ตอนนี้วงเล็บระบุ ว่านี่คืออาร์เรย์ 585 00:30:14,520 --> 00:30:19,920 สตริงดังนั้น argv วงเล็บหมายถึง ที่ argv เป็นอาร์เรย์ของสาย 586 00:30:19,920 --> 00:30:22,540 ตอนนี้ในทางเทคนิคสตริง เป็นอาร์เรย์ของตัวอักษร 587 00:30:22,540 --> 00:30:26,400 ดังนั้นนี่คือตอนนี้อาร์เรย์ ของอาเรย์ของตัวอักษร 588 00:30:26,400 --> 00:30:31,490 แต่มันเป็นเรื่องง่ายมากที่จะคิดเกี่ยวกับ นี้เป็นเพียงอาร์เรย์ของสตริง 589 00:30:31,490 --> 00:30:34,900 >> เหตุใดจึงต้องวงเล็บอาจจะว่างเปล่า 590 00:30:34,900 --> 00:30:38,170 เช่นทำไมไม่สามารถเราพูดว่า วงเล็บ 5 วงเล็บ n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 ใช่ 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 ใช่ 595 00:30:44,230 --> 00:30:46,396 เราไม่ทราบจำนวน ปัจจัยการผลิตที่มีกำลังจะเป็น 596 00:30:46,396 --> 00:30:53,560 ดังนั้นถ้าเราดูที่ตัวอย่างเช่นเสียงดังกราว, เราพูดเสียงดังกราวรีบ o สวัสดี hello.c 597 00:30:53,560 --> 00:30:56,710 โดยเฉพาะในกรณีนี้มีเกิดขึ้น จะเป็นสามอาร์กิวเมนต์บรรทัดคำสั่ง 598 00:30:56,710 --> 00:31:00,522 และเพื่อ brackets-- ที่เราจะเห็น ในครั้งที่สองก็จะไม่สาม 599 00:31:00,522 --> 00:31:01,730 ในทางเทคนิคมันจะเป็นสี่ 600 00:31:01,730 --> 00:31:04,030 แต่วงเล็บเราจะ กล่าวว่ามีสาม 601 00:31:04,030 --> 00:31:08,220 แต่ตอนนี้ถ้าเรามองไปที่ย้าย mario.c จุดจุดวงเล็บ 602 00:31:08,220 --> 00:31:09,760 เราต้องการที่จะใส่สองในพวกเขา 603 00:31:09,760 --> 00:31:12,884 >> และมีจำนวนมากของคำสั่งที่ มีจำนวนตัวแปรของบรรทัดคำสั่ง 604 00:31:12,884 --> 00:31:13,620 ข้อโต้แย้ง 605 00:31:13,620 --> 00:31:17,430 ดังนั้นสิ่งที่รุ่นนี้ สัญกรณ์วงเล็บบ่งชี้ 606 00:31:17,430 --> 00:31:20,820 คือว่า argv เป็นอาร์เรย์ของสาย 607 00:31:20,820 --> 00:31:24,360 แต่เราไม่ทราบจำนวน สตริงในอาร์เรย์ที่ 608 00:31:24,360 --> 00:31:27,090 และวิธีที่เราทำแล้วรู้วิธี สายจำนวนมากอยู่ในแถว? 609 00:31:27,090 --> 00:31:28,870 นั่นเป็นจุดรวม argc 610 00:31:28,870 --> 00:31:32,300 argc บอกเราว่า argv ยาว 611 00:31:32,300 --> 00:31:36,500 >> ดังนั้นสิ่งสุดท้ายที่จะเก็บไว้ใน ใจก็คือว่าในทางเทคนิค 612 00:31:36,500 --> 00:31:40,820 คำสั่งของตัวเองนับว่าเป็นหนึ่งใน ของการขัดแย้งบรรทัดคำสั่ง 613 00:31:40,820 --> 00:31:45,330 ดังนั้นซีดี pset1 มีสอง อาร์กิวเมนต์บรรทัดคำสั่ง 614 00:31:45,330 --> 00:31:50,260 โปรแกรมในตัวเอง, CD แล้ว ส่วนข้อโต้แย้งที่เกิดขึ้นจริงของมัน pset1 615 00:31:50,260 --> 00:31:54,490 โปรแกรมใด ๆ ที่คุณได้เขียนป่านนี้ มีหนึ่งบรรทัดคำสั่ง argument-- จุด 616 00:31:54,490 --> 00:31:55,320 มาริโอเฉือน 617 00:31:55,320 --> 00:31:57,350 นั่นเป็นเพียงอาร์กิวเมนต์บรรทัดคำสั่ง 618 00:31:57,350 --> 00:32:00,900 >> ดังนั้นตอนนี้กำลังมองหาที่เสียงดังกราว รีบ o สวัสดี hello.c 619 00:32:00,900 --> 00:32:01,905 ดังนั้นสิ่งที่ argc? 620 00:32:01,905 --> 00:32:05,260 621 00:32:05,260 --> 00:32:06,080 4 622 00:32:06,080 --> 00:32:08,140 argc ดังนั้น 4 623 00:32:08,140 --> 00:32:12,140 เสียงดังกราวเพื่อยึด argv 0 เสียงดังกราว 624 00:32:12,140 --> 00:32:15,630 argv วงเล็บ 1 รีบ 0 625 00:32:15,630 --> 00:32:21,870 วงเล็บ argv 2 สวัสดีและ วงเล็บ argv 3 เป็น hello.c 626 00:32:21,870 --> 00:32:26,813 ตกลงดังนั้นคำถามเกี่ยวกับเรื่องนี้และจากนั้นเราจะ ดูตัวอย่างการเขียนโปรแกรมบางอย่าง 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> ตกลง. 629 00:32:30,480 --> 00:32:36,260 ดังนั้นเราจะดูที่ hello3.c 630 00:32:36,260 --> 00:32:41,890 ดังนั้นนี้ควรจะเป็นที่คุ้นเคยจาก หนึ่งในตัวอย่างที่คแรก 631 00:32:41,890 --> 00:32:45,800 เรามีที่เราก็จะพูดว่าสวัสดี โลก แต่ตอนนี้เป็นทั่วไปมากขึ้น 632 00:32:45,800 --> 00:32:52,300 ดังนั้นที่นี่เรากำลังพูดทักทาย % s เครื่องหมายวงเล็บ n argv 1 633 00:32:52,300 --> 00:32:57,440 Notice-- เพื่อขึ้นจนถึงจุดนี้เป็น สิ่งที่แฟ้มแม่แบบของฉันได้มองเช่น 634 00:32:57,440 --> 00:33:01,800 ผมมี int main (void) แล้วฉันจะ ทำอะไรบางอย่างในการทำงานหลัก 635 00:33:01,800 --> 00:33:05,100 ตอนนี้แทนเมื่อเราเริ่มต้นการจัดการ กับการขัดแย้งบรรทัดคำสั่ง 636 00:33:05,100 --> 00:33:07,890 เราจำเป็นต้องระบุ รูปแบบที่แตกต่างกันของหลัก 637 00:33:07,890 --> 00:33:11,930 >> ดังนั้นการมองหาที่ hello3 อีกครั้งหลักที่เกิดขึ้น 638 00:33:11,930 --> 00:33:15,990 จะใช้เวลาสองข้อโต้แย้ง now-- int argc, จำนวนของการขัดแย้งบรรทัดคำสั่ง 639 00:33:15,990 --> 00:33:20,970 และสตริง argv วงเล็บที่เกิดขึ้นจริง สายเข้ามาที่บรรทัดคำสั่ง 640 00:33:20,970 --> 00:33:26,560 ดังนั้นฉันจะเปลี่ยนที่ แม่แบบเพื่อสะท้อนให้เห็นถึงความจริงที่ว่า 641 00:33:26,560 --> 00:33:29,060 ตอนนี้เมื่อใดก็ตามที่คุณเขียน โปรแกรมถ้าคุณทำไม่ได้ 642 00:33:29,060 --> 00:33:33,720 จำเป็นต้องใช้บรรทัดคำสั่งใด ๆ ข้อโต้แย้งจากนั้นเพียงแค่ใช้ int main (void) 643 00:33:33,720 --> 00:33:37,070 แต่ตอนนี้เมื่อคุณเขียน โปรแกรมอาร์กิวเมนต์บรรทัดคำสั่งที่ 644 00:33:37,070 --> 00:33:40,350 คุณจะต้องทำสำหรับปัญหา ตั้ง two-- ดังนั้นตอนนี้ที่คุณกำลังทำงาน 645 00:33:40,350 --> 00:33:42,630 โปรแกรมที่จำเป็นต้องใช้ การขัดแย้งบรรทัดคำสั่ง 646 00:33:42,630 --> 00:33:45,250 คุณจะต้องมีหลักของแบบฟอร์มนี้ 647 00:33:45,250 --> 00:33:51,290 >> ดังนั้น here-- นี้คือการใช้ขนาดใหญ่ ของการโต้แย้งบรรทัดคำสั่ง 648 00:33:51,290 --> 00:33:54,100 ดังนั้นการพิมพ์ argv 1 649 00:33:54,100 --> 00:33:59,180 ตกลงจึงขอรวบรวม และเรียกใช้โปรแกรมนี้ 650 00:33:59,180 --> 00:34:02,440 ทำให้ hello3 651 00:34:02,440 --> 00:34:03,570 compiles 652 00:34:03,570 --> 00:34:06,870 Dot เฉือน hello3 653 00:34:06,870 --> 00:34:08,920 และให้พูดว่า "ร็อบ". 654 00:34:08,920 --> 00:34:10,760 สวัสดีร็อบ 655 00:34:10,760 --> 00:34:14,940 ถ้าผมพูดว่า "สวัสดีมาเรีย" สวัสดีเรีย 656 00:34:14,940 --> 00:34:15,719 สวัสดีค่ะมาเรีย 657 00:34:15,719 --> 00:34:18,639 ฮันนาห์ยังคงกล่าวว่า "สวัสดี มาเรีย "เพราะฉันไม่ได้ 658 00:34:18,639 --> 00:34:21,340 ทำอะไรกับ argv ของเรา 2 659 00:34:21,340 --> 00:34:22,590 argv 2 ตอนนี้จะเป็น "ฮันนาห์." 660 00:34:22,590 --> 00:34:25,030 argc จะเป็น 3 661 00:34:25,030 --> 00:34:27,735 ถ้าฉันทำอย่างนี้? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 ดังนั้นสวัสดี null 664 00:34:34,679 --> 00:34:38,760 >> เขาสัมผัสในเวลาสั้น ๆ กับความจริงที่ ว่าในทางเทคนิค GetString 665 00:34:38,760 --> 00:34:42,429 อาจกลับ null แต่เราจะได้รับ มากขึ้นในสิ่งที่เป็นจริง null 666 00:34:42,429 --> 00:34:47,449 แต่จะเป็นเรื่องของการ ความจริงที่ว่าไม่เป็นโดยทั่วไปที่ไม่ดี 667 00:34:47,449 --> 00:34:50,179 เราทำอะไรผิดถ้า ก็พิมพ์ "สวัสดี null." 668 00:34:50,179 --> 00:34:52,179 และเหตุผลที่เราทำ บางสิ่งบางอย่างที่ไม่ถูกต้อง is-- ดี 669 00:34:52,179 --> 00:34:56,179 เมื่อฉันวิ่ง hello3 เฉือนจุด argc 1 670 00:34:56,179 --> 00:34:59,680 ดังนั้นที่หมายถึงความยาวของ argv เป็น 1 671 00:34:59,680 --> 00:35:05,110 หากอาร์เรย์ของความยาว 1, เพียงดัชนีที่ถูกต้องเป็นศูนย์ 672 00:35:05,110 --> 00:35:08,550 และเพื่อให้ที่นี่ argv 1 อยู่นอก ช่วงนี้ของอาร์เรย์ 673 00:35:08,550 --> 00:35:13,410 มันก็คล้ายกับก่อนเมื่อฉันพยายาม ในการจัดเก็บ 6 นอกปลายแถวที่ 674 00:35:13,410 --> 00:35:18,100 ดังนั้นฉันพยายามที่จะเข้าถึงบางสิ่งบางอย่าง นอกนับ argv, 675 00:35:18,100 --> 00:35:21,340 และเราจะได้รับ null 676 00:35:21,340 --> 00:35:24,360 >> ดังนั้นรุ่นที่ดีกว่าของ นี้การปรับปรุง 677 00:35:24,360 --> 00:35:27,010 มีการตรวจสอบอย่างชัดเจน argc 678 00:35:27,010 --> 00:35:33,580 ดังนั้นหาก argc เท่ากับ 2 นั่นหมายความว่าเราวิ่ง สิ่งที่ต้องการเฉือนจุด hello3 ร็อบ 679 00:35:33,580 --> 00:35:36,840 และมันจะพิมพ์ "สวัสดีร็อบ." 680 00:35:36,840 --> 00:35:39,850 หาก argc ไม่เท่ากับ 2 แล้วก็แค่ไป 681 00:35:39,850 --> 00:35:42,560 ที่จะไม่สนใจสิ่งที่คุณใส่ ที่อาร์กิวเมนต์บรรทัดคำสั่ง 682 00:35:42,560 --> 00:35:43,960 เป็นอาร์กิวเมนต์บรรทัดคำสั่ง 683 00:35:43,960 --> 00:35:47,168 หรือถ้าคุณไม่ได้ใส่เลยก็ เพียงแค่จะสนใจว่าและเพียงแค่บอกว่า 684 00:35:47,168 --> 00:35:47,960 "สวัสดีคุณ." 685 00:35:47,960 --> 00:35:51,490 >> ดังนั้นการรวบรวมนี้ 686 00:35:51,490 --> 00:35:54,500 ทำให้ hello4 687 00:35:54,500 --> 00:35:56,790 และทำงาน hello4 688 00:35:56,790 --> 00:36:00,010 วิ่งมันด้วยวิธีนี้ สิ่งที่ควรจะพิมพ์? 689 00:36:00,010 --> 00:36:01,330 "สวัสดีคุณ." 690 00:36:01,330 --> 00:36:02,810 สวัสดีคุณ. 691 00:36:02,810 --> 00:36:05,870 สิ่งที่เกี่ยวกับ hello4 ร็อบ? 692 00:36:05,870 --> 00:36:06,950 "ร็อบฮัลโหล." 693 00:36:06,950 --> 00:36:10,580 และในที่สุดก็สวัสดีร็อบมาเรีย เป็นเพียง "สวัสดีคุณ" อีกครั้ง 694 00:36:10,580 --> 00:36:13,677 เพราะคุณไม่ได้จริงๆใส่ สิ่งที่คาดว่า 695 00:36:13,677 --> 00:36:15,510 คุณป้อนชื่ออื่น ๆ อีกมากมาย เกินกว่าที่จะสามารถจัดการ 696 00:36:15,510 --> 00:36:19,500 ดังนั้นมันก็จะผิดนัด สวัสดีคุณพฤติกรรม 697 00:36:19,500 --> 00:36:23,040 ดังนั้นคำถามเกี่ยวกับเรื่องนี้? 698 00:36:23,040 --> 00:36:26,290 หรืออาร์กิวเมนต์บรรทัดคำสั่ง? 699 00:36:26,290 --> 00:36:28,690 >> ตกลงดังนั้นการดูที่เป็น สองสามตัวอย่างของการใช้ 700 00:36:28,690 --> 00:36:34,230 บรรทัดคำสั่ง arguments-- แรก เราได้ argv 1 จุดประค 701 00:36:34,230 --> 00:36:38,510 ดังนั้นการแสดงความคิดเห็นในสิ่งที่ให้ไป โปรแกรมนี้ควรจะทำ 702 00:36:38,510 --> 00:36:42,460 แต่สังเกตเห็น now-- นี้ห่วง นี้ตรงกับรูปแบบที่แน่นอน 703 00:36:42,460 --> 00:36:43,390 ที่ผมบอกว่าก่อนที่จะ 704 00:36:43,390 --> 00:36:46,240 เราก็จะเกิดขึ้น ใช้ argc แทน n 705 00:36:46,240 --> 00:36:48,880 ตอนนี้ argc เป็นจริงที่ n 706 00:36:48,880 --> 00:36:51,260 มันเป็นความยาวของอาร์เรย์ argv 707 00:36:51,260 --> 00:36:59,600 ดังนั้นจะทำซ้ำมากกว่า argv อาร์เรย์ printf ไอเอ็นจีแต่ละค่า argv 708 00:36:59,600 --> 00:37:04,730 >> ดังนั้นถ้าผมทำนี้ 709 00:37:04,730 --> 00:37:08,232 ทำให้ argv 1 710 00:37:08,232 --> 00:37:09,940 มันรวบรวม 711 00:37:09,940 --> 00:37:11,620 Dot เฉือน argv 1 712 00:37:11,620 --> 00:37:15,530 เพียงแค่การทำงานนี้มัน พิมพ์ดอทเฉือน argv 1 713 00:37:15,530 --> 00:37:18,500 เนื่องจากว่าเป็นสิ่งเดียวที่บรรทัดคำสั่ง argument-- ชื่อโปรแกรม 714 00:37:18,500 --> 00:37:22,080 ก็คือจะมีที่ least-- argc ต้องไม่น้อยกว่าหนึ่ง 715 00:37:22,080 --> 00:37:25,910 เนื่องจากมีจะเสมอเป็นอย่างน้อย เป็นชื่อโปรแกรมที่จะเรียกใช้ 716 00:37:25,910 --> 00:37:32,040 ดังนั้น argv 1 ร็อบจะพิมพ์ argv 1 และจากนั้นในบรรทัดใหม่ "ร็อบ". 717 00:37:32,040 --> 00:37:36,350 >> ดังนั้นในการทำซ้ำเป็นครั้งแรก ของวงนี้ผมเป็น 0 718 00:37:36,350 --> 00:37:39,090 argv 0 ชื่อโปรแกรม 719 00:37:39,090 --> 00:37:40,010 Dot เฉือน argv 1 720 00:37:40,010 --> 00:37:43,770 และแล้ว argv 1 เป็นครั้งแรกของฉัน อาร์กิวเมนต์บรรทัดคำสั่งซึ่งเป็นร็อบ 721 00:37:43,770 --> 00:37:45,920 ณ จุดนี้เราจะเท่ากับ argc 722 00:37:45,920 --> 00:37:48,210 เราแยกออกจากวงและเรากำลังทำ 723 00:37:48,210 --> 00:37:53,940 ดังนั้นนี้จะทำงานให้โดยพลการ จำนวนอาร์กิวเมนต์บรรทัดคำสั่ง 724 00:37:53,940 --> 00:37:58,550 แจ้งให้ทราบว่าพิมพ์ argv 0, argv 1, argv 2 argv 3 argv 4 725 00:37:58,550 --> 00:38:00,150 และมี argv 5 ไม่มี 726 00:38:00,150 --> 00:38:01,460 argc เท่ากับ 5 727 00:38:01,460 --> 00:38:06,960 ดังนั้นใน argc-- ที่ฉันเท่ากับ 5 เราแยกออกจากวง 728 00:38:06,960 --> 00:38:07,950 ตกลง. 729 00:38:07,950 --> 00:38:11,315 ดังนั้นคำถามเกี่ยวกับว่าก่อนที่เราจะ ดูตัวอย่างที่ซับซ้อนมากขึ้น? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> ดังนั้น argv 2 732 00:38:16,860 --> 00:38:17,830 ทั้งหมดขวา 733 00:38:17,830 --> 00:38:20,610 ดังนั้นเรายังคงพิมพ์ อาร์กิวเมนต์บรรทัดคำสั่ง 734 00:38:20,610 --> 00:38:23,170 แต่ตอนนี้เรามีการแจ้งให้ทราบล่วงหน้า ซ้อนกันสำหรับวง 735 00:38:23,170 --> 00:38:24,670 ดังนั้นสิ่งที่จะทำนี้? 736 00:38:24,670 --> 00:38:28,430 ดังนั้นวงแรกที่จะทำ ว่าสิ่งที่มันทำมาก่อน 737 00:38:28,430 --> 00:38:30,950 เรายังคงวนลูป แต่ละอาร์กิวเมนต์บรรทัดคำสั่ง 738 00:38:30,950 --> 00:38:34,260 แต่ตอนนี้ loop-- ที่สองนี้เราได้ นอกจากนี้ยังเห็นบางสิ่งบางอย่างเช่นนี้มาก่อน 739 00:38:34,260 --> 00:38:38,600 เมื่อเขาถูกทำซ้ำมากกว่า Zamyla พิมพ์ออก Z-A-M-Y-L-A 740 00:38:38,600 --> 00:38:44,816 ดังนั้นนี่วงที่สองสำหรับเจ int เท่ากับ 0, n เท่ากับ strlen ของวงเล็บ argv ฉัน 741 00:38:44,816 --> 00:38:49,170 >> ถ้าอย่างนั้นเราคิดว่าสำหรับครั้งแรก the-- ขอเดินผ่าน 742 00:38:49,170 --> 00:38:53,560 ลองคิดว่าสิ่งที่คอมพิวเตอร์จะ ทำอย่างไรถ้าฉันวิ่งโปรแกรมนี้เป็นเพียงแค่จุด 743 00:38:53,560 --> 00:38:56,030 เฉือนรีบ argv 2 744 00:38:56,030 --> 00:39:03,590 ดังนั้นถ้าฉันวิ่งรหัสนี้แล้ว argc เป็นไปได้เท่ากับ 1 745 00:39:03,590 --> 00:39:07,050 และสตริง argv-- มีเพียง จะเป็นหนึ่งในดัชนี argv, 746 00:39:07,050 --> 00:39:12,370 และนั่นจะเป็นจุดเท่ากับ เฉือน argv 2-- ชื่อโปรแกรม 747 00:39:12,370 --> 00:39:19,170 >> ตกลงดังนั้นตอนนี้ฉันมีค่าเท่ากับ 0, ฉันน้อยกว่า 1, ผมบวกบวกสำหรับเจ int เท่ากับ 0, 748 00:39:19,170 --> 00:39:23,880 n เท่ากับ strlen ของวงเล็บ argv 0 ดังนั้นใน ซ้ำเป็นครั้งแรกของวงนี้ argv 749 00:39:23,880 --> 00:39:27,250 0 วงเล็บคือเฉือนจุด argv 2 750 00:39:27,250 --> 00:39:29,320 ดังนั้นสิ่งที่เป็นความยาวของสตริงที่? 751 00:39:29,320 --> 00:39:32,480 ดีดอทเฉือน A-R-G-V 2 เส้นประ 752 00:39:32,480 --> 00:39:35,020 ดังนั้น strlen ของที่จะเป็น 8 753 00:39:35,020 --> 00:39:37,500 ดังนั้นเจเท่ากับ 0, n เท่ากับ 8 754 00:39:37,500 --> 00:39:39,530 ตราบใดที่เจน้อยกว่า 8 เจ ++ 755 00:39:39,530 --> 00:39:44,080 และด้วยความที่เรากำลังจะได้รับ พิมพ์ตัวอักษรตัวเดียวซึ่ง 756 00:39:44,080 --> 00:39:47,350 เป็นตัวยึด argv ฉันยึดญ 757 00:39:47,350 --> 00:39:49,826 >> ดังนั้นฉันเพียง แต่เป็นศูนย์ 758 00:39:49,826 --> 00:39:51,700 เรายังคงมีเพียงหนึ่ง อาร์กิวเมนต์บรรทัดคำสั่ง 759 00:39:51,700 --> 00:39:53,890 ในการที่ย้ำแรก ของห่วงเรา 760 00:39:53,890 --> 00:39:56,950 จะเป็นการพิมพ์ วงเล็บวงเล็บ argv 0 0 761 00:39:56,950 --> 00:39:58,325 และจากนั้นเจจะไปเพิ่ม 762 00:39:58,325 --> 00:40:01,650 และเรากำลังจะพิมพ์ วงเล็บ argv 0 วงเล็บ 1 763 00:40:01,650 --> 00:40:04,150 และแล้ว argv 0 วงเล็บวงเล็บ 2 764 00:40:04,150 --> 00:40:09,030 >> ดังนั้นนี่คือการเผชิญหน้าครั้งแรกของเรา ของอาร์เรย์หลายมิติ 765 00:40:09,030 --> 00:40:12,770 โปรดจำไว้ก่อนหน้านี้ที่ผมกล่าวว่า argv ว่าเป็นเทคนิค 766 00:40:12,770 --> 00:40:15,950 อาร์เรย์ของอาร์เรย์ของตัวอักษร 767 00:40:15,950 --> 00:40:24,360 ดังนั้นที่นี่ถ้าฉันบอกว่าสิ่งที่ต้องการ สตริง s เท่ากับวงเล็บ argv ฉัน 768 00:40:24,360 --> 00:40:29,590 แล้วผมพูดว่า s ญวงเล็บนี้ จะประสบความสำเร็จในสิ่งเดียวกัน 769 00:40:29,590 --> 00:40:31,960 ตอนนี้คุณได้เห็นของเจวงเล็บก่อน 770 00:40:31,960 --> 00:40:36,680 นั่นเป็นเพียงแค่การเข้าถึงที่ j ลักษณะของสายนี้ 771 00:40:36,680 --> 00:40:48,010 ดังนั้นด้วยนี้เราจะได้รับ ตัวอักษรที่ j ของ argv ที่ i 772 00:40:48,010 --> 00:40:51,450 >> ดังนั้นสิ่งที่ควรจะส่งออกในท้ายที่สุดนี้หรือไม่? 773 00:40:51,450 --> 00:40:53,210 ทำให้ argv 2 774 00:40:53,210 --> 00:40:54,730 มันรวบรวม 775 00:40:54,730 --> 00:40:56,340 Dot เฉือน argv 2 776 00:40:56,340 --> 00:41:03,790 "ร็อบมาเรียฮันนาห์" และให้เราบางห้อง 777 00:41:03,790 --> 00:41:07,050 ดังนั้นเราจึงเห็นว่านี่คือการแสดงผล จุดบนเส้นของตัวเองและเฉือน 778 00:41:07,050 --> 00:41:08,920 ในสายของตัวเองและในสายของตัวเอง 779 00:41:08,920 --> 00:41:11,260 มันพิมพ์ออกในแต่ละ ตัวบุคคล 780 00:41:11,260 --> 00:41:12,950 ของแต่ละอาร์กิวเมนต์บรรทัดคำสั่ง 781 00:41:12,950 --> 00:41:15,960 และจากนั้นในระหว่างพวกเขา เพราะเส้นใหม่นี้ 782 00:41:15,960 --> 00:41:19,380 เรากำลังพิมพ์ลงที่นี่ใน ระหว่างพวกเขามันจะพิมพ์บรรทัดใหม่ 783 00:41:19,380 --> 00:41:24,540 >> ดังนั้นนี้จะคล้ายกับ ประ argv ก่อนที่ 1, 784 00:41:24,540 --> 00:41:26,459 ซึ่งแต่ละพิมพ์ อาร์กิวเมนต์บรรทัดคำสั่ง 785 00:41:26,459 --> 00:41:28,500 แต่ตอนนี้เรากำลังพิมพ์ อาร์กิวเมนต์บรรทัดคำสั่ง 786 00:41:28,500 --> 00:41:31,950 และจากนั้นทำซ้ำผ่านแต่ละ ตัวละครของแต่ละอาร์กิวเมนต์บรรทัดคำสั่ง 787 00:41:31,950 --> 00:41:35,400 ที่จะได้รับการส่งออกนี้ 788 00:41:35,400 --> 00:41:36,870 ตกลง? 789 00:41:36,870 --> 00:41:40,570 ดังนั้นคำถามเกี่ยวกับเรื่องนี้? 790 00:41:40,570 --> 00:41:45,130 >> สิ่งหนึ่งที่ควรทราบก็คือ บรรทัดคำสั่ง arguments-- 791 00:41:45,130 --> 00:41:49,990 ดังนั้นพวกเขาจะคั่นด้วยช่องว่างเป็น คุณธรรมชาติจะคาดหวังให้เป็น 792 00:41:49,990 --> 00:41:53,050 ดังนั้นสตริงสามารถมีช่องว่างในนั้น 793 00:41:53,050 --> 00:41:57,380 มันไม่สำคัญสุด แต่ถ้าฉัน ต้องการอาร์กิวเมนต์บรรทัดคำสั่งที่สาม 794 00:41:57,380 --> 00:42:01,226 มีพื้นที่อยู่ในนั้นแล้วฉัน จะพูดอะไรเช่นนี้ 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 ตกลง? 797 00:42:05,550 --> 00:42:12,190 ดังนั้นในตอนนี้ยังคงเป็นเพียงมีสาม arguments-- บรรทัดคำสั่งเดียว 4 798 00:42:12,190 --> 00:42:17,620 จุดประเฉือน 2 argv ขโมย มาเรียและฮันนาห์บลูมเบิร์ก 799 00:42:17,620 --> 00:42:18,320 ตกลง. 800 00:42:18,320 --> 00:42:19,310 คำถามที่เกี่ยวกับเรื่องนี้? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> ไม่มีอะไรเป็นพิเศษ เกี่ยวกับตัวละครพื้นที่ 803 00:42:24,894 --> 00:42:27,810 มันก็เกิดขึ้นที่จะเป็นไปได้ว่า บรรทัดคำสั่งถือว่าอักขระช่องว่าง 804 00:42:27,810 --> 00:42:29,226 เป็นวิธีการที่คุณแยกแต่ละอาร์กิวเมนต์ 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 ทั้งหมดขวา 807 00:42:33,000 --> 00:42:39,950 ดังนั้นแล้วชุดปัญหา two-- คุณกำลังจะได้รับ 808 00:42:39,950 --> 00:42:43,240 มองไปที่การเข้ารหัสลับที่สำคัญ 809 00:42:43,240 --> 00:42:47,700 ดังนั้นคล้ายกับตัวอย่างที่ ที่เราเห็นจากเรื่องคริสมาสต์ 810 00:42:47,700 --> 00:42:52,840 คุณกำลังจะได้รับการดำเนินการบางอย่าง ขั้นตอนวิธีการที่ได้รับข้อความ 811 00:42:52,840 --> 00:42:55,560 คุณจะสามารถ ในการเข้ารหัสข้อความนั้น 812 00:42:55,560 --> 00:42:58,730 ว่ามีเพียงคนที่มีความลับที่ ที่สำคัญด้วยแหวนถอดรหัสว่า 813 00:42:58,730 --> 00:43:01,090 ควรจะสามารถถอดรหัส 814 00:43:01,090 --> 00:43:04,839 >> เพื่อให้เป็นรุ่นมาตรฐาน 815 00:43:04,839 --> 00:43:07,130 คุณกำลังจะได้รับการดำเนินการ สองรุ่นที่แตกต่างกัน 816 00:43:07,130 --> 00:43:09,620 หากคุณเกิดขึ้นที่จะดู ที่แฮ็กเกอร์ Edition-- ตอนนี้ 817 00:43:09,620 --> 00:43:12,600 เรากำลังจะให้ คุณสตริงเช่นนี้ 818 00:43:12,600 --> 00:43:15,240 ซึ่งหมายถึงรหัสผ่านที่มีการเข้ารหัส 819 00:43:15,240 --> 00:43:19,990 ดังนั้นเป้าหมายของคุณคือการคิดออก รหัสผ่านถอดรหัสสิ่งที่เป็น 820 00:43:19,990 --> 00:43:26,950 ตอนนี้เป็นจริงว่ารหัสผ่าน จะถูกเก็บไว้ในจำนวนมากของคอมพิวเตอร์ 821 00:43:26,950 --> 00:43:31,290 และมันก็เก็บนี้ สตริงแบบสุ่มของตัวละคร 822 00:43:31,290 --> 00:43:34,440 คุณจะต้องคิดออกว่าจะได้รับ จากสตริงสุ่มของตัวละคร 823 00:43:34,440 --> 00:43:36,140 กับสิ่งที่รหัสผ่านเดิมคือ 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> และในที่สุดหลังจากนี้ ชุดปัญหาคุณควร 826 00:43:43,290 --> 00:43:46,100 สามารถที่จะเข้าใจในสิ่งที่นี้หมายถึง 827 00:43:46,100 --> 00:43:51,650 ดังนั้นคุณจะได้เรียนรู้วิธีการถอดรหัส การเรียงลำดับของสตริงสุ่มนี้ 828 00:43:51,650 --> 00:43:56,390 ในทำนองเดียวกันถ้าคุณจำจากสัปดาห์ 0 คุณอาจได้เห็น URL นี้ 829 00:43:56,390 --> 00:44:00,210 และคุณควรจะสามารถที่จะ ถอดรหัสนี้ในที่สุด 830 00:44:00,210 --> 00:44:04,810 คุณอาจจะไม่ได้มีความสุขเมื่อคุณ ถอดรหัสและคลิกที่ลิงค์ 831 00:44:04,810 --> 00:44:05,700 ทั้งหมดขวา 832 00:44:05,700 --> 00:44:06,591 นั่นมันสำหรับวันนี้ 833 00:44:06,591 --> 00:44:12,095 ดังนั้นเห็นคุณในสัปดาห์หน้า! 834 00:44:12,095 --> 00:44:18,315 >> [เล่นดนตรีอิเล็กทรอนิ] 835 00:44:18,315 --> 00:47:15,619