1 00:00:00,000 --> 00:00:02,480 >> [Music kucheza] 2 00:00:02,480 --> 00:00:06,460 3 00:00:06,460 --> 00:00:09,350 >> DOUG LLOYD: zote haki, hivyo hebu majadiliano juu ya amri ya mstari wa hoja. 4 00:00:09,350 --> 00:00:11,800 Kwa hiyo, hadi sasa katika mwendo mzuri mengi yote ya programu yako 5 00:00:11,800 --> 00:00:16,360 pengine kuanza kama hii int kuu utupu. 6 00:00:16,360 --> 00:00:18,310 Tumekuwa kukusanya user pembejeo kama sisi haja yake 7 00:00:18,310 --> 00:00:21,080 katika mipango yetu, kama vile Mario mpango, kwa mfano, 8 00:00:21,080 --> 00:00:22,990 na katika-mpango papo kwa hapo. 9 00:00:22,990 --> 00:00:25,190 Sisi si zinahitajika ili kurekebisha tamko la kuu, 10 00:00:25,190 --> 00:00:30,684 kwa sababu badala ndani ya kuu sisi tu kusema, unaweza kuiita kupata int. 11 00:00:30,684 --> 00:00:32,350 Jinsi kubwa Unataka piramidi kuwa? 12 00:00:32,350 --> 00:00:34,455 Au unaweza kuiita kupata kuelea mabadiliko ni kiasi gani 13 00:00:34,455 --> 00:00:36,400 lazima mimi pato kwa mtumiaji? 14 00:00:36,400 --> 00:00:38,630 >> Kuna njia nyingine ni kwamba, na kama tunataka watumiaji wetu 15 00:00:38,630 --> 00:00:40,580 kuwa na uwezo wa kutoa data kwa mpango wetu 16 00:00:40,580 --> 00:00:43,320 katika Runtime badala ya wakati mpango ni mbio, 17 00:00:43,320 --> 00:00:45,910 Tofauti hila lakini wakati mwingine moja muhimu sana, 18 00:00:45,910 --> 00:00:48,120 tunahitaji aina mpya ya kutangaza kuu. 19 00:00:48,120 --> 00:00:53,320 Hatuwezi kutumia int kuu utupu kama tunataka kukusanya takwimu nyingine katika amri ya mstari 20 00:00:53,320 --> 00:00:57,540 wakati mtumiaji anaendesha mpango, hivyo amri ya mstari wa hoja. 21 00:00:57,540 --> 00:00:59,810 >> Kukusanya hizi amri ya mstari hoja kutoka kwa mtumiaji, 22 00:00:59,810 --> 00:01:03,140 mabadiliko tamko yako ya kuu ya kuangalia kama hii int 23 00:01:03,140 --> 00:01:10,450 kuu, Paren wazi, int argc, comma, kamba argv, mabano mraba, 24 00:01:10,450 --> 00:01:12,670 na kisha kufungua curly brace. 25 00:01:12,670 --> 00:01:14,415 Hivyo hiyo ina maana gani tayari? 26 00:01:14,415 --> 00:01:19,410 Naam, sisi ni kupita katika vigezo mbili, au hoja, au pembejeo kwa kuu. 27 00:01:19,410 --> 00:01:23,800 Moja, integer kuitwa argc, na wengine ni nini? 28 00:01:23,800 --> 00:01:26,430 29 00:01:26,430 --> 00:01:29,640 Ni safu ya masharti, sawa? 30 00:01:29,640 --> 00:01:31,140 Tunaona kwamba mraba bracket nukuu. 31 00:01:31,140 --> 00:01:32,181 Ni safu ya masharti. 32 00:01:32,181 --> 00:01:35,110 Siyo kamba ya mtu binafsi, ni safu ya masharti. 33 00:01:35,110 --> 00:01:39,640 Na hawa hoja mbili, argc na argv, kuwawezesha wewe kujua nini data user 34 00:01:39,640 --> 00:01:42,912 imetoa katika amri ya mstari na ni mambo mangapi 35 00:01:42,912 --> 00:01:44,120 zinazotolewa katika amri ya mstari. 36 00:01:44,120 --> 00:01:46,570 Mambo pretty muhimu kufanya kazi pamoja. 37 00:01:46,570 --> 00:01:50,310 >> Argc anasimama kwa hoja kuhesabu, na unapaswa kujua, kwa njia, 38 00:01:50,310 --> 00:01:52,600 kwamba unaweza kuwaita argc chochote unataka. 39 00:01:52,600 --> 00:01:54,710 Unaweza kupiga argv chochote alitaka. 40 00:01:54,710 --> 00:01:58,740 Haya ndiyo majina tu ya kawaida kwamba sisi kutumia kwa them-- hoja kuhesabu, 41 00:01:58,740 --> 00:02:00,907 na kama tutaweza kuona katika pili, Hoja vector, argv. 42 00:02:00,907 --> 00:02:03,698 Lakini huna kuwaita argc na argv kama wewe hawataki, 43 00:02:03,698 --> 00:02:05,570 lakini conventionally, hiyo ni nini cha kufanya. 44 00:02:05,570 --> 00:02:07,500 >> Hivyo anyway, argc, hoja kuhesabu. 45 00:02:07,500 --> 00:02:11,569 Ni integer aina kutofautiana na hivyo, kama unaweza kutarajia, kama tuna mambo mawili 46 00:02:11,569 --> 00:02:13,860 kwamba tunakwenda kuwa kutafuta nini hawa yameingizwa 47 00:02:13,860 --> 00:02:16,070 na mambo ni kiasi gani mtumiaji typed, argc ni 48 00:02:16,070 --> 00:02:18,559 kwenda kutuambia ni kiasi gani stuff mtumiaji typed. 49 00:02:18,559 --> 00:02:20,850 Hivyo ni anatoa idadi ya amri ya mstari wa hoja mtumiaji 50 00:02:20,850 --> 00:02:22,470 typed wakati mpango aliuawa. 51 00:02:22,470 --> 00:02:25,780 Hivyo kama mpango wako ni kukimbia nukta kufyeka tamaa, 52 00:02:25,780 --> 00:02:28,670 na ndani ya tamaa yako mpango kazi yako kuu 53 00:02:28,670 --> 00:02:34,800 ina tamko int kuu int argc, kamba argv mabano mraba, kisha 54 00:02:34,800 --> 00:02:37,950 argc katika kesi hiyo ni moja. 55 00:02:37,950 --> 00:02:40,200 Sasa angalia hatufanyi kuhesabu mambo mangapi 56 00:02:40,200 --> 00:02:42,590 mtumiaji typed baada jina mpango. 57 00:02:42,590 --> 00:02:46,710 Jina programu yenyewe makosa kama hoja amri ya mstari. 58 00:02:46,710 --> 00:02:51,770 >> Hivyo dot kufyeka tamaa, katika kesi hiyo, argc ni moja. 59 00:02:51,770 --> 00:02:57,910 Kama mtumiaji typed kufyeka tamaa 1024 CS50 katika amri ya mstari, argc katika kesi hiyo 60 00:02:57,910 --> 00:02:59,520 itakuwa tatu. 61 00:02:59,520 --> 00:03:03,720 Na tunajua hii kwa sababu njia kwamba mgawanyiko kati ya masharti 62 00:03:03,720 --> 00:03:06,030 ni wanaona ni kama kuna nafasi, au tab, 63 00:03:06,030 --> 00:03:08,230 au kitu kama hicho kati yao. 64 00:03:08,230 --> 00:03:13,860 Hivyo kiasi chochote cha nafasi nyeupe, kinachojulikana, kati ya maadili typed amri ya mstari 65 00:03:13,860 --> 00:03:15,720 inaonyesha jinsi wengi kuna. 66 00:03:15,720 --> 00:03:24,040 Hivyo dot kufyeka nafasi tamaa 1024 nafasi CS50, argc, katika kesi hiyo, ni tatu. 67 00:03:24,040 --> 00:03:26,600 >> Argv ni hoja vector. 68 00:03:26,600 --> 00:03:29,240 Vector, kwa njia, ni tu neno lingine kwa safu, 69 00:03:29,240 --> 00:03:31,510 na hii ni safu kwamba maduka masharti. 70 00:03:31,510 --> 00:03:35,540 Kamba moja kwa kipengele, ambayo ni masharti kwamba mtumiaji kweli 71 00:03:35,540 --> 00:03:39,230 typed katika amri ya mstari wakati mpango aliuawa. 72 00:03:39,230 --> 00:03:40,990 Sasa, kama ilivyo na safu yoyote, kama wewe 73 00:03:40,990 --> 00:03:44,380 kukumbuka kutoka mjadala wetu wa arrays, kitu cha kwanza cha argv 74 00:03:44,380 --> 00:03:49,150 ni daima kwenda kwa kupatikana katika argv mraba mabano sifuri. 75 00:03:49,150 --> 00:03:51,800 Hiyo ni ripoti ya kwanza ya argv safu. 76 00:03:51,800 --> 00:03:55,720 Ili will-- na kwa kweli, kwamba mapenzi kuwa daima jina la mpango, 77 00:03:55,720 --> 00:03:59,730 daima kuwa ipo katika argv mraba mabano sifuri. 78 00:03:59,730 --> 00:04:08,590 >> Kipengele mwisho wa argv ni daima kupatikana katika argv mraba mabano argc bala moja. 79 00:04:08,590 --> 00:04:10,300 Je, unaweza kuona nini? 80 00:04:10,300 --> 00:04:14,180 Kumbuka mambo mangapi zipo katika safu hii. 81 00:04:14,180 --> 00:04:16,660 Naam, tunajua that-- ni argc idadi ya vipengele. 82 00:04:16,660 --> 00:04:21,279 Kama mtumiaji typed mambo matatu katika amri ya mstari, argc ni tatu. 83 00:04:21,279 --> 00:04:27,070 Lakini kwa sababu katika c, wakati sisi ni kufanya kazi na arrays, kila kipengele cha safu, 84 00:04:27,070 --> 00:04:30,190 au tuseme fahirisi ya safu, kuanza saa sifuri. 85 00:04:30,190 --> 00:04:34,000 Kama tuna mambo matatu katika yetu safu, tuna kipengele katika argv sifuri, 86 00:04:34,000 --> 00:04:37,930 kipengele katika argv moja, na kipengele katika argv mbili. 87 00:04:37,930 --> 00:04:41,700 Hakuna kipengele katika argv tatu, na safu ya ukubwa tatu. 88 00:04:41,700 --> 00:04:43,990 Hivyo ndiyo sababu mwisho kipengele cha argv unaweza daima 89 00:04:43,990 --> 00:04:49,510 kupatikana katika argv mraba mabano argc bala moja. 90 00:04:49,510 --> 00:04:52,420 >> Basi hebu kudhani executes mtumiaji Mpango wenye tamaa kama follows-- 91 00:04:52,420 --> 00:04:57,970 kama aina katika amri ya mstari wa nukta kufyeka tamaa nafasi 1,024 nafasi CS50, 92 00:04:57,970 --> 00:05:00,720 na kwa sababu yoyote tumekuwa tayari tayari mpango wetu wenye tamaa 93 00:05:00,720 --> 00:05:04,050 kujua na kufanya kazi na hawa amri ya mstari wa hoja. 94 00:05:04,050 --> 00:05:07,030 Hatukuwa awali wakati sisi kazi juu yake kwa tatizo tamaa, 95 00:05:07,030 --> 00:05:09,660 lakini hebu sema tumekuwa sasa iliyopita hivyo kwamba sisi kufanya mchakato 96 00:05:09,660 --> 00:05:11,480 amri ya mstari wa hoja kwa namna fulani. 97 00:05:11,480 --> 00:05:15,720 Katika kesi hiyo, argv sifuri ni dot slash tamaa. 98 00:05:15,720 --> 00:05:17,042 Nini argv moja? 99 00:05:17,042 --> 00:05:19,030 Naam, ni 1024, sawa? 100 00:05:19,030 --> 00:05:22,620 Ni 1024, lakini hapa ni distinction-- kweli ni muhimu 101 00:05:22,620 --> 00:05:26,410 Unakumbuka aina data ya argv? 102 00:05:26,410 --> 00:05:31,020 >> Ni maduka masharti, right? 103 00:05:31,020 --> 00:05:34,140 Lakini inaonekana kama 1024 ni thamani integer. 104 00:05:34,140 --> 00:05:36,530 Hii ni kweli ni muhimu Tofauti na ni kweli 105 00:05:36,530 --> 00:05:40,200 inaenda kuwa kitu ambacho anaweza kukutana katika matatizo baadaye. 106 00:05:40,200 --> 00:05:43,770 Kila kitu katika argv ni kuhifadhiwa kama kamba. 107 00:05:43,770 --> 00:05:48,775 Hivyo yaliyomo argv mtu ni kamba moja, sifuri, mbili, nne, 108 00:05:48,775 --> 00:05:50,275 yenye wahusika hao wanne. 109 00:05:50,275 --> 00:05:53,870 Ni kama mtumiaji typed moja, sifuri, mbili, nne 110 00:05:53,870 --> 00:05:56,680 kama barua binafsi au wahusika. 111 00:05:56,680 --> 00:06:00,730 Sio integer 1024, na hivyo huwezi moja kwa moja 112 00:06:00,730 --> 00:06:11,580 kazi na hivyo kwa kusema int 1,000, au badala int x sawa argv moja bala 24. 113 00:06:11,580 --> 00:06:15,550 >> Shirikishi, unaweza kufikiri ya kwamba kama, sawa, vizuri ni 1,024 bala 24, 114 00:06:15,550 --> 00:06:17,920 hivyo x ni sawa na 1,000. 115 00:06:17,920 --> 00:06:22,020 Lakini kwa kweli, si kwamba kesi, kwa sababu argv moja ni kamba. 116 00:06:22,020 --> 00:06:23,940 Kamba 1024. 117 00:06:23,940 --> 00:06:28,739 Sasa kuna kazi ambayo inaweza kuwa kutumika kubadili masharti ya integers. 118 00:06:28,739 --> 00:06:30,780 Mimi si nyara hiyo kwa ajili yenu sasa, lakini mimi nina uhakika Zamyla 119 00:06:30,780 --> 00:06:34,380 kuwa na furaha kukuambia kuhusu hilo katika walkthrough kwa tatizo baadaye. 120 00:06:34,380 --> 00:06:36,390 Lakini pia unaweza kupata matatizo like-- kisingizio 121 00:06:36,390 --> 00:06:39,921 mimi, kazi ambayo ingekuwa kufanya hivyo katika kumbukumbu 50, 122 00:06:39,921 --> 00:06:42,462 ukienda rejea mwongozo unaweza kupata kazi ambayo 123 00:06:42,462 --> 00:06:43,820 itafanya kubadilika hii kwa ajili yenu. 124 00:06:43,820 --> 00:06:45,980 Lakini tena, katika walkthrough kwa tatizo baadaye, 125 00:06:45,980 --> 00:06:48,290 Zamyla watafurahi kukuambia nini kazi 126 00:06:48,290 --> 00:06:53,280 ni kwamba mapenzi kubadilisha kamba 1024 kwa integer 1024. 127 00:06:53,280 --> 00:06:54,560 >> Haki wote, hivyo kuendelea. 128 00:06:54,560 --> 00:06:56,726 Tumekuwa kufunikwa argv yetu sifuri, tumekuwa kufunikwa argv moja. 129 00:06:56,726 --> 00:06:58,000 Nini katika argv mbili? 130 00:06:58,000 --> 00:06:58,620 CS50. 131 00:06:58,620 --> 00:07:01,350 Moja kwamba pengine pretty maelezo binafsi. 132 00:07:01,350 --> 00:07:02,950 Nini katika argv tatu? 133 00:07:02,950 --> 00:07:04,970 Naam tena, sisi si kweli kujua, sawa? 134 00:07:04,970 --> 00:07:08,060 Tuna safu ya ukubwa tatu, hiyo ni mambo mangapi mtumiaji 135 00:07:08,060 --> 00:07:11,610 typed katika amri ya mstari, hivyo kama sisi kwenda argv tatu, 136 00:07:11,610 --> 00:07:14,660 sisi ni sasa overstepping mipaka ya safu yetu. 137 00:07:14,660 --> 00:07:18,570 Compiler hebu kufanya hivyo, hakuna tatizo Intuitive na hayo, 138 00:07:18,570 --> 00:07:22,890 lakini katika suala la kweli nini kinaendelea kutokea, sisi si kweli kujua. 139 00:07:22,890 --> 00:07:25,380 Ni unategemea nini ni ziko katika kumbukumbu ambapo 140 00:07:25,380 --> 00:07:28,060 argv tatu itakuwa inatarajiwa kuwa. 141 00:07:28,060 --> 00:07:30,716 Na hivyo tunaweza kuishia kupata mbali Scot bure. 142 00:07:30,716 --> 00:07:33,840 Zaidi kuliko hata, hasa wakati wewe ni kufanya kazi na argv kinyume 143 00:07:33,840 --> 00:07:35,548 kwa safu nyingine yoyote hiyo ni katika mpango wetu, 144 00:07:35,548 --> 00:07:38,660 sisi ni pengine anaenda kuteseka segmentation kosa. Hivyo tena, 145 00:07:38,660 --> 00:07:42,756 kuwa na uhakika sio overstep mipaka ya arrays yako, hasa argv, 146 00:07:42,756 --> 00:07:47,170 kutokana na shahada yake ya juu ya umuhimu katika mipango yako. 147 00:07:47,170 --> 00:07:48,100 >> Mimi nina Doug Lloyd. 148 00:07:48,100 --> 00:07:50,170 Hii ni CS50. 149 00:07:50,170 --> 00:07:51,457