[Prehrávanie hudby] DOUG LLOYD: Dobre, tak poďme hovoriť o argumenty príkazového riadka. Tak, tak ďaleko v priebehu celkom veľa všetkých vašich programov pravdepodobne zahájená ako tohle-- int main prázdnoty. Boli sme zbieranie Užívateľ vstup, pokiaľ ju potrebujeme v našich programoch, ako je napríklad Program Mario, napríklad, in-programu výziev. Ešte sme potrebovali upraviť vyhlásenie o hlavných, pretože miesto vo vnútri hlavnej my len povedať, môžete volať to dostať int. Ako veľké chcete pyramída byť? Alebo môžete zavolať na získanie float-- ako veľké zmeny mal výstup Aj pre užívateľov? K dispozícii je ďalší spôsob, aj keď, a ak chceme našim užívateľom aby bolo možné poskytnúť dáta do nášho programu pri behu namiesto chvíľu program beží, jemný rozdiel, ale niekedy veľmi užitočná jedným, Potrebujeme novú formu vyhlásiť hlavné. Nemôžeme použiť int main prázdno, ak chceme zhromažďovať ďalšie dáta na príkazovom riadku keď používateľ spustí program, tým aj argumenty príkazového riadku. Zbierať tieto príkazového riadka argumenty od užívateľa, zmeniť vyhlásenie Hlavným vyzerať ako tohle-- int Hlavné, otvorené parenie, int argc, čiarka, string argv, hranaté zátvorky, a potom otvorte zložená zátvorka. Tak čo to znamená už? No, my sa okolo v dvoch parametroch, alebo argumenty, alebo vstupy do hlavnej. Jeden z nich, celé číslo s názvom argc, a druhý je čo? Je to pole reťazcov, že jo? Vidíme, že hranaté zátvorky notácie. Je to pole reťazcov. Nie je to individuálne reťazec, je to pole reťazcov. A tieto dva argumenty, argc a argv, vám umožní vedieť, čo dát užívateľské poskytol na príkazovom riadku a ako veľa ak na príkazovom riadku. Celkom užitočné veci s ním pracovať. Argc predstavuje počet argumentu, a mali by ste vedieť, mimochodom, že by ste mohli zavolať argc čo budete chcieť. Môžete volať argv, čo ste chceli. To sú len konvenčné mená že sme sa použiť pre them-- počet argumentu, a ako uvidíme v druhej, Argument vektora, argv. Ale nemusíte ich nazývať argc a argv, ak nechcete, ale konvenčne, to je to, čo robíme. Tak ako tak, argc, gróf argument. Je to celé číslo typu premennej, a tak, ako je sa dalo očakávať, ak budeme mať dve veci že budeme potrebné nájsť out, čo to sú zadané a koľko vypchať užívateľ napísal, argc je bude nám povedať, ako veľmi napchať užívateľa zadaný. Tak to vám dáva rad argumenty príkazového riadku užívateľ zadali, keď bol popravený programu. Takže ak je váš program spustiť bodka lomítko chamtivý, a vo vnútri váš chamtivý naprogramovať hlavné funkcie má vyhlásenie int main int argc, string argv hranaté zátvorky, potom argc v tomto prípade je jeden. Teraz si všimnúť my nie Spočítajte, koľko vecí užívateľ napísal za menom programu. Meno Samotný program počíta ako argument príkazového riadku. Takže dot lomítko chamtivý, v že prípad, argc je jeden. Pokiaľ užívateľ napísal lomka chamtivý 1024 CS50 na príkazovom riadku, argc v tomto prípade by mali byť tri. A vieme, že to preto, že spôsob, akým že rozdiel medzi strunami sa detekuje, či tam je priestor, alebo karta, alebo niečo podobné, že medzi nimi. Takže akékoľvek množstvo biele miesto, takzvané, medzi hodnotami zadali príkazového riadku ukazuje, koľko ich je. Takže dot lomítko chamtivý priestory v lukratívnej 1024 priestor CS50, argc, v tomto prípade, je tri. Argv je argument vektor. Vector, mimochodom, je len iné slovo pre polia, a to je pole ktorá ukladá reťazca. Jeden reťazec za prvok, ktorý je reťazca, že užívateľ skutočne zadali na príkazovom riadku keď sa vykonávanie programu. Teraz, rovnako ako v prípade s akýmkoľvek polia, ak ste spomínam z našej diskusie o poľa, prvý prvok argv je vždy bude nájdený na argv hranatých zátvorkách nulové. To je prvý index z argv poľa. Takže will-- a v skutočnosti, že vôľa Vždy byť názov programu, bude vždy umiestnený na argv hranatou zátvorku nula. Posledným prvkom argv sa vždy našiel na argv hranatých zátvorkách argc mínus jedna. Vidíte, prečo? Spomeňte si, ako veľa prvkov vyskytujúcich sa na tomto poli. No, vieme, že je to that-- argc počet prvkov. Pokiaľ užívateľ napísal tri veci na príkazového riadku, argc je tri. Ale pretože v c, keď pracujeme s poli, každý prvok poľa, alebo skôr indexy poľa, začínajú nulou. Ak budeme mať tri prvky v našej poľa, máme prvok na argv nula, prvok na argv jednom, a prvok na argv dva. Neexistuje žiadny prvok v argv tri, a rad veľkosti tri. Takže to je dôvod, prečo posledná prvok argv môže vždy možno nájsť na argv námestí držiaky argc mínus jedna. Takže poďme sa predpokladať, že Užívateľ vykoná chamtivý programu ako follows-- ak zadajte do príkazového riadku dot lomítko chamtivý priestor 1024 priestor CS50, a z akéhokoľvek dôvodu máme už pripravený náš chamtivý programu spoznať a pracovať s nimi argumenty príkazového riadku. Urobili sme to skôr, keď sme pracovali na nej chamtivý problému, ale povedzme, že sme teraz upravený to tak, že my proces príkazového riadku argumenty nejakým spôsobom. V tomto prípade, argv nula je bodka lomítko chamtivý. Čo je argv z nich? No, je to 1024, nie? Je to 1024, ale tu je to naozaj dôležité distinction-- Spomínate si na dátový typ argv? Ukladá reťazcov, že jo? Ale vyzerá to, že 1024 je celé číslo. To je naozaj dôležité rozdiel, a je vlastne stane niečo, čo vás sa môžu vyskytnúť v ďalších problémov. Všetko v argv je uložené ako reťazec. Takže obsah argv niečí sú string jedným, nula, dve, štyri, skladajúci sa z týchto štyroch znakov. Je to, ako by zadali užívateľ jedným, nula, dve, štyri as jednotlivými písmenami alebo znakmi. Nie je to celé číslo 1.024, a preto nie je možné priamo pracovať s ním tým, že hovorí int 1000, alebo skôr int x rovná argv jeden mínus 24. Intuitívne, možno si myslíte o tom as, OK, no to je 1024 mínus 24, takže x sa rovná 1,000. Ale v skutočnosti, že to nie je tento prípad, pretože argv jeden je reťazec. Reťazec 1024. Teraz je funkcia, ktorá môže byť slúži k prevodu reťazcov na celé čísla. Nebudem pokaziť to pre vás teraz, ale som si istý, Zamyla Bude rád, že ti o tom v návod pre budúce problém. Ale môžete tiež nájsť Problémy s jako-- výhovorka mi, že by funkcia to urobiť v odkaze 50, ak idete do referenčnej príručky nájdete funkciu, ktorá bude tento prevod za vás. Ale opäť, v sprievodcovi pre budúce problém, Zamyla radi tí, čo funkcie to je, že sa prevádzajú string 1024 na celé číslo 1024. Dobre, tak ďalej. Sme prebrali naše argv nulu, sme prebrali argv jeden. Čo je v argv dvoma? CS50. Že jeden je pravdepodobne docela samo-vysvetľujúce. Čo je v argv tri? No opäť, my naozaj neviem, že jo? Máme poľa veľkosti tri, to je, ako mnoho prvkov užívateľa zadali na príkazovom riadku, takže keď sme išli do argv tri, Teraz prekročenie medze našej pole. Kompilátor bude nám to, nie je intuitívne problém s tým, ale pokiaľ ide o skutočne čo sa deje sa tak stalo, sme naozaj neviem. Záleží na tom, čo je sa nachádza na pamäti, kde argv tri by sa očakávať, že bude. A tak by sme mohli skončiť dostať preč scot zadarmo. Viac než pravdepodobné, najmä keď pracujete s argv ako protiklad k inému poli to je v našom programe, budeme pravdepodobne bude trpieť chyba segmentácie. Takže znovu, Dbajte na to, aby neprekročil hranice zo svojich polí, najmä argv, vzhľadom k jeho vysokému stupňu význam vo svojich programoch. Som Doug Lloyd. To je CS50.