>> [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.