[Predvaja glasba] Doug LLOYD: V redu, tako da je govorimo o argumenti v ukazni vrstici. Torej, do sedaj v teku precej veliko vse svoje programe verjetno začelo kot this-- int glavno praznino. Smo bili zbiranje Uporabnik vhod če ga potrebujemo v naših programih, kot so denimo Program Mario, na primer, ga v-program pozove. Nismo potrebno spreminjati izjavo o glavni, ker namesto znotraj glavnega mi pravkar rekel, ga lahko pokličete, da bi dobili int. Kako velika hočeš piramida biti? Ali lahko rečejo, da bi dobili float-- koliko sprememb Naj izhod za uporabnika? Obstaja še en način, čeprav, in če želimo našim uporabnikom da se lahko zagotovi Podatki na našem programu na runtime namesto časa program teče, subtilno razlikovanje vendar včasih zelo koristen on, potrebujemo novo obliko razglasitvi glavni. Ne moremo uporabiti int glavno praznino, če želimo zbere druge podatke v ukazni vrstici ko uporabnik zažene program, s tem tudi argumenti ukazne vrstice. Zbirati te ukazni vrstici argumenti s strani uporabnika, spremeniti svojo izjavo Glavno, da izgleda kot this-- notr Glavni, odprti paren, int argc, vejica, niz argv, oglati oklepaji, in odprite kodrasti oklepaja. Torej, kaj to pomeni že? No, smo se mimo dveh parametrov, ali argumenti, ali vhodi na glavno. Ena, celo imenuje argc, in drugi je kaj? To je niz nizov, kajne? Vidimo, da oglati oklepaj zapis. To je niz nizov. To ni posameznik niz, to je niz nizov. In ta dva argumenta, argc in argv, vam omogoča, da vedo, kaj podatkov uporabnika je določeno v ukazni vrstici in koliko stvari, ki jih če na ukazni vrstici. Precej uporabne stvari za delati. Argc stojala za štetje argument, in bi morali vedeti, mimogrede, da bi lahko pokličete argc karkoli hočeš. Lahko pokličete argv karkoli si hotel. To so samo navadni imena ki jih uporabljamo za them-- število argumentov, in, kot bomo videli v drugem, argument vector, argv. Vendar vam ni treba, da jih pokličete argc in argv, če ne želite, ampak dogovorno, da je tisto, kar počnemo. Tako nekako, argc, število argument. To je spremenljivka celo število tipa in tako, kot je bi lahko pričakovali, če imamo dve stvari da bomo za iskanje izvedeti, kaj se ti tipkal in koliko Stuff Vtipkali, argc je dogaja, da nam pove, koliko stvari Vtipkali. Torej, vam daje več argumenti ukazne vrstice uporabnik vnesli, ko je bil program izveden. Torej, če je vaš program teči dot poševnica pohlepni, in notranjost vaše požrešen programiranje glavno funkcijo ima izjavo int glavni int argc, niz argv oglate oklepaje, nato argc v tem primeru je eden. Zdaj opazili, ne bomo Preštejte, koliko stvari uporabnik tipkal po imenu programa. Sam ime programa šteje kot argument ukazne vrstice. Torej dot poševnica pohlepni, v da primer, argc je eden. Če Vtipkali slash požrešen 1024 CS50 v ukazni vrstici, argc v tem primeru bi bilo tri. In vemo, je to zato, ker je način da je delitev med strune zazna, ali je prostor ali zanka, ali kaj podobnega, da je med njimi. Torej vsak znesek belega prostora, tako imenovani, med vrednostmi vnesli v ukazni vrstici kaže, koliko jih je. Torej dot poševnica požrešen preslednico 1024 prostor CS50, argc, v tem primeru, je tri. Argv je argument vektor. Vektor, mimogrede, je le druga beseda za vrsto, in to je matrika da shranjuje nize. En niz na elementu, ki je strune da uporabnik dejansko vnesli v ukazni vrstici ko je bil program izveden. Zdaj, kot je to v primeru z vsako paleto, če vas spomnimo iz naše razprave nizi, prvi element argv Vedno bo mogoče najti na argv kvadratni nosilec ničlo. To je prvi indeks v argv array. Tako da will-- in v dejstvu, da je volja Vedno je ime programa, Vedno se bo nahaja na argv oglati oklepaj nič. Zadnji element argv je vedno našel na argv oglatih oklepajih argc minus ena. Ali vidite, zakaj? Spomnite se, kako veliko elementov obstajati v tem polju. No, vemo, that-- je argc število elementov. Če Vtipkali tri stvari na ukazni vrstici, argc je tri. Ampak zato, ker v C, ko delamo z nizi, vsak element matrike, ali bolje indeksi matrika, začeti na nič. Če imamo tri elemente v našem matrika, imamo element v argv ničlo, element pri argv eno, in element na argv dva. Nobenega elementa v argv tri, in paleto velikosti tri. Torej, to je, zakaj je zadnji element argv lahko vedno je na voljo na argv trgu nosilci argc minus ena. Torej, kaj je prevzame uporabnik izvaja požrešen program kot follows-- če se tip v ukazni vrstici piko na poševnica požrešen prostor 1024 vesoljsko CS50, in ne glede na razlog, ki smo jih že pripravili naši požrešen programa vedeti in delo z njimi argumenti ukazne vrstice. Nismo prej, ko smo delali na njej pohlepni problem, ampak recimo, da smo zdaj spremenjena je tako, da smo storili proces argumente ukazne vrstice na nek način. V tem primeru, argv nič je pika poševnica požrešen. Kaj je argv ena? No, to je 1024, kajne? To je 1024, vendar je tu res pomembno distinction-- Se spomnite podatkovni tip argv? V njej so zbrani strune, kajne? Ampak izgleda, 1024 je celo vrednost. To je zelo pomembno, Razlikovanje, in je dejansko bo postal nekaj, kar vas lahko srečajo v kasnejših težav. Vse v argv je shranjena kot niz. Torej vsebina argv One so Niz ena, nič, dve, štiri, sestavljen iz teh štirih znakov. To je, kot če Vtipkali ena, nič, dve, štiri kot posamezne črke ali znake. To ni celo 1024, in tako ne boste neposredno more delo z njim z besedami int 1000, ali namesto int x enak argv eno minus 24. Intuitivno, si morda mislite na to kot, OK, tudi to je 1024 minus 24, tako x je enako 1.000. Toda v resnici, to ni tako, ker argv eden je niz. Niz 1024. Zdaj je funkcija, ki je lahko uporablja za pretvorbo strune števil. Ne bom ga pokvari za vas zdaj, vendar sem prepričan, Zamyla bo vesel, da vam povem o tem v walkthrough za prihodnji problem. Vendar pa lahko najdete tudi problemsko like-- izgovor me, funkcije, ki bi To storite s sklicem 50, če greš na referenčni vodnik lahko najdete funkcijo, ki bo to konverzijo za vas. Ampak še enkrat, v walkthrough za prihodnjo težavo, Zamyla bodo z veseljem vam kaj funkcija povem je, da bo pretvorbo Niz 1024 do celo 1024. Vse je v redu, tako da se gibljejo na. Mi smo zajela našo argv nič, smo zajeti argv enega. Kaj je v argv dveh? CS50. Da je eden je verjetno precej samoumevna. Kaj je v argv tri? Pa še enkrat, ne bomo zares vedeli, kajne? Imamo celo paleto velikosti tri, to je, kako veliko elementov uporabnik vnesli v ukazni vrstici, tako da, če gremo v argv tri, smo zdaj prekoračili so meje našega polja. Prevajalnik bo nam to storiti, ni intuitiven problem z njo, ampak v smislu dejansko kaj se dogaja se bo zgodilo, ne vem. To je odvisno od tega, kaj je nahaja na kateri pomnilnik argv tri, bi bilo pričakovati, da bo. In tako smo lahko na koncu Pobegnili scot brezplačno. Bolj verjetno kot ne, še posebej, ko delate z argv v nasprotju kateri koli drugi niz da je v našem programu, bomo verjetno bo trpel napaka segmentacijo. Torej še enkrat, Bodite prepričani, da ne bo prestopil meja vaših nizi, posebej argv, zaradi visoke stopnje pomen v svojih programih. Sem Doug Lloyd. To je CS50.