[Music kucheza] DOUG LLOYD: zote haki, hivyo hebu majadiliano juu ya amri ya mstari wa hoja. Kwa hiyo, hadi sasa katika mwendo mzuri mengi yote ya programu yako pengine kuanza kama hii int kuu utupu. Tumekuwa kukusanya user pembejeo kama sisi haja yake katika mipango yetu, kama vile Mario mpango, kwa mfano, na katika-mpango papo kwa hapo. Sisi si zinahitajika ili kurekebisha tamko la kuu, kwa sababu badala ndani ya kuu sisi tu kusema, unaweza kuiita kupata int. Jinsi kubwa Unataka piramidi kuwa? Au unaweza kuiita kupata kuelea mabadiliko ni kiasi gani lazima mimi pato kwa mtumiaji? Kuna njia nyingine ni kwamba, na kama tunataka watumiaji wetu kuwa na uwezo wa kutoa data kwa mpango wetu katika Runtime badala ya wakati mpango ni mbio, Tofauti hila lakini wakati mwingine moja muhimu sana, tunahitaji aina mpya ya kutangaza kuu. Hatuwezi kutumia int kuu utupu kama tunataka kukusanya takwimu nyingine katika amri ya mstari wakati mtumiaji anaendesha mpango, hivyo amri ya mstari wa hoja. Kukusanya hizi amri ya mstari hoja kutoka kwa mtumiaji, mabadiliko tamko yako ya kuu ya kuangalia kama hii int kuu, Paren wazi, int argc, comma, kamba argv, mabano mraba, na kisha kufungua curly brace. Hivyo hiyo ina maana gani tayari? Naam, sisi ni kupita katika vigezo mbili, au hoja, au pembejeo kwa kuu. Moja, integer kuitwa argc, na wengine ni nini? Ni safu ya masharti, sawa? Tunaona kwamba mraba bracket nukuu. Ni safu ya masharti. Siyo kamba ya mtu binafsi, ni safu ya masharti. Na hawa hoja mbili, argc na argv, kuwawezesha wewe kujua nini data user imetoa katika amri ya mstari na ni mambo mangapi zinazotolewa katika amri ya mstari. Mambo pretty muhimu kufanya kazi pamoja. Argc anasimama kwa hoja kuhesabu, na unapaswa kujua, kwa njia, kwamba unaweza kuwaita argc chochote unataka. Unaweza kupiga argv chochote alitaka. Haya ndiyo majina tu ya kawaida kwamba sisi kutumia kwa them-- hoja kuhesabu, na kama tutaweza kuona katika pili, Hoja vector, argv. Lakini huna kuwaita argc na argv kama wewe hawataki, lakini conventionally, hiyo ni nini cha kufanya. Hivyo anyway, argc, hoja kuhesabu. Ni integer aina kutofautiana na hivyo, kama unaweza kutarajia, kama tuna mambo mawili kwamba tunakwenda kuwa kutafuta nini hawa yameingizwa na mambo ni kiasi gani mtumiaji typed, argc ni kwenda kutuambia ni kiasi gani stuff mtumiaji typed. Hivyo ni anatoa idadi ya amri ya mstari wa hoja mtumiaji typed wakati mpango aliuawa. Hivyo kama mpango wako ni kukimbia nukta kufyeka tamaa, na ndani ya tamaa yako mpango kazi yako kuu ina tamko int kuu int argc, kamba argv mabano mraba, kisha argc katika kesi hiyo ni moja. Sasa angalia hatufanyi kuhesabu mambo mangapi mtumiaji typed baada jina mpango. Jina programu yenyewe makosa kama hoja amri ya mstari. Hivyo dot kufyeka tamaa, katika kesi hiyo, argc ni moja. Kama mtumiaji typed kufyeka tamaa 1024 CS50 katika amri ya mstari, argc katika kesi hiyo itakuwa tatu. Na tunajua hii kwa sababu njia kwamba mgawanyiko kati ya masharti ni wanaona ni kama kuna nafasi, au tab, au kitu kama hicho kati yao. Hivyo kiasi chochote cha nafasi nyeupe, kinachojulikana, kati ya maadili typed amri ya mstari inaonyesha jinsi wengi kuna. Hivyo dot kufyeka nafasi tamaa 1024 nafasi CS50, argc, katika kesi hiyo, ni tatu. Argv ni hoja vector. Vector, kwa njia, ni tu neno lingine kwa safu, na hii ni safu kwamba maduka masharti. Kamba moja kwa kipengele, ambayo ni masharti kwamba mtumiaji kweli typed katika amri ya mstari wakati mpango aliuawa. Sasa, kama ilivyo na safu yoyote, kama wewe kukumbuka kutoka mjadala wetu wa arrays, kitu cha kwanza cha argv ni daima kwenda kwa kupatikana katika argv mraba mabano sifuri. Hiyo ni ripoti ya kwanza ya argv safu. Ili will-- na kwa kweli, kwamba mapenzi kuwa daima jina la mpango, daima kuwa ipo katika argv mraba mabano sifuri. Kipengele mwisho wa argv ni daima kupatikana katika argv mraba mabano argc bala moja. Je, unaweza kuona nini? Kumbuka mambo mangapi zipo katika safu hii. Naam, tunajua that-- ni argc idadi ya vipengele. Kama mtumiaji typed mambo matatu katika amri ya mstari, argc ni tatu. Lakini kwa sababu katika c, wakati sisi ni kufanya kazi na arrays, kila kipengele cha safu, au tuseme fahirisi ya safu, kuanza saa sifuri. Kama tuna mambo matatu katika yetu safu, tuna kipengele katika argv sifuri, kipengele katika argv moja, na kipengele katika argv mbili. Hakuna kipengele katika argv tatu, na safu ya ukubwa tatu. Hivyo ndiyo sababu mwisho kipengele cha argv unaweza daima kupatikana katika argv mraba mabano argc bala moja. Basi hebu kudhani executes mtumiaji Mpango wenye tamaa kama follows-- kama aina katika amri ya mstari wa nukta kufyeka tamaa nafasi 1,024 nafasi CS50, na kwa sababu yoyote tumekuwa tayari tayari mpango wetu wenye tamaa kujua na kufanya kazi na hawa amri ya mstari wa hoja. Hatukuwa awali wakati sisi kazi juu yake kwa tatizo tamaa, lakini hebu sema tumekuwa sasa iliyopita hivyo kwamba sisi kufanya mchakato amri ya mstari wa hoja kwa namna fulani. Katika kesi hiyo, argv sifuri ni dot slash tamaa. Nini argv moja? Naam, ni 1024, sawa? Ni 1024, lakini hapa ni distinction-- kweli ni muhimu Unakumbuka aina data ya argv? Ni maduka masharti, right? Lakini inaonekana kama 1024 ni thamani integer. Hii ni kweli ni muhimu Tofauti na ni kweli inaenda kuwa kitu ambacho anaweza kukutana katika matatizo baadaye. Kila kitu katika argv ni kuhifadhiwa kama kamba. Hivyo yaliyomo argv mtu ni kamba moja, sifuri, mbili, nne, yenye wahusika hao wanne. Ni kama mtumiaji typed moja, sifuri, mbili, nne kama barua binafsi au wahusika. Sio integer 1024, na hivyo huwezi moja kwa moja kazi na hivyo kwa kusema int 1,000, au badala int x sawa argv moja bala 24. Shirikishi, unaweza kufikiri ya kwamba kama, sawa, vizuri ni 1,024 bala 24, hivyo x ni sawa na 1,000. Lakini kwa kweli, si kwamba kesi, kwa sababu argv moja ni kamba. Kamba 1024. Sasa kuna kazi ambayo inaweza kuwa kutumika kubadili masharti ya integers. Mimi si nyara hiyo kwa ajili yenu sasa, lakini mimi nina uhakika Zamyla kuwa na furaha kukuambia kuhusu hilo katika walkthrough kwa tatizo baadaye. Lakini pia unaweza kupata matatizo like-- kisingizio mimi, kazi ambayo ingekuwa kufanya hivyo katika kumbukumbu 50, ukienda rejea mwongozo unaweza kupata kazi ambayo itafanya kubadilika hii kwa ajili yenu. Lakini tena, katika walkthrough kwa tatizo baadaye, Zamyla watafurahi kukuambia nini kazi ni kwamba mapenzi kubadilisha kamba 1024 kwa integer 1024. Haki wote, hivyo kuendelea. Tumekuwa kufunikwa argv yetu sifuri, tumekuwa kufunikwa argv moja. Nini katika argv mbili? CS50. Moja kwamba pengine pretty maelezo binafsi. Nini katika argv tatu? Naam tena, sisi si kweli kujua, sawa? Tuna safu ya ukubwa tatu, hiyo ni mambo mangapi mtumiaji typed katika amri ya mstari, hivyo kama sisi kwenda argv tatu, sisi ni sasa overstepping mipaka ya safu yetu. Compiler hebu kufanya hivyo, hakuna tatizo Intuitive na hayo, lakini katika suala la kweli nini kinaendelea kutokea, sisi si kweli kujua. Ni unategemea nini ni ziko katika kumbukumbu ambapo argv tatu itakuwa inatarajiwa kuwa. Na hivyo tunaweza kuishia kupata mbali Scot bure. Zaidi kuliko hata, hasa wakati wewe ni kufanya kazi na argv kinyume kwa safu nyingine yoyote hiyo ni katika mpango wetu, sisi ni pengine anaenda kuteseka segmentation kosa. Hivyo tena, kuwa na uhakika sio overstep mipaka ya arrays yako, hasa argv, kutokana na shahada yake ya juu ya umuhimu katika mipango yako. Mimi nina Doug Lloyd. Hii ni CS50.