>> [Glazbom]
>> Doug LLOYD: U redu, pa neka je govoriti o naredbenog retka argumente.
Dakle, do sada je u tijeku prilično koliko sve programe
su vjerojatno započeli kao this-- int main prazninu.
Mi smo prikupljanje unos korisnika ako je to potrebno
u našim programima, kao što su Mario programa, na primjer,
in-programa upute.
Nismo potrebno mijenjati izjava o glavnom,
jer umjesto unutar glavne mi Samo kažem, možda ćete ga nazvati da se int.
Koliki želite piramida biti?
Ili možda nazvati doći float-- koliko promjena
bih izlaz za korisnika?
>> Postoji još jedan put, iako, a ako želimo našim korisnicima
biti u mogućnosti osigurati Podaci našem programu
vrijeme izvođenja umjesto vremena program radi,
suptilna razlika, ali ponekad vrlo korisna,
trebamo novi oblik progla glavni.
Ne možemo koristiti int glavni prazninu ako želimo prikupiti druge podatke na naredbenog retka
kada korisnik pokreće program, stoga naredbenog retka argumente.
>> Za prikupljanje tih naredbenog retka Argumenti od korisnika,
promijenite deklaraciju Glavni izgledati this-- int
Glavni, otvorena zagrada, int argc, zarez, niz argv, uglatim zagradama,
a zatim otvorite kovrčavu braće.
Dakle, što to znači već?
Pa, mi prolaze u dva parametra, ili argumenata, ili ulazi na glavna.
Jedan, cijeli zove argc, a drugi je što?
To je niz žice, zar ne?
Vidimo da je uglata zagrada zapis.
To je niz žice.
To nije pojedinac niz, to je niz žice.
I to dva argumenta, argc i argv, omogućuju vam da znate što korisničkih podataka
pod uvjetom da na naredbenog retka i koliko stvari se
pod uvjetom da na naredbenog retka.
Prilično korisne stvari raditi.
>> Argc predstavlja argument računati, i ti bi trebao znati, usput,
da biste mogli nazvati argc god vi to želite.
Možete nazvati argv god htjeli.
To su samo konvencionalni imena koji se koriste za them-- računati argument,
i kao što ćemo vidjeti u drugom, Argument vektor, argv.
Ali ne morate ih nazvati argc i argv ako ne želite,
ali obično, to je ono što mi radimo.
>> Pa ipak, argc, grof argument.
To je varijabla broj tipa i tako, kao što je što ste mogli očekivati, ako imamo dvije stvari
da ćemo se naći što su to upisali
i koliko preparirati Korisnik upisali, argc je
će nam reći koliko stvari korisniku upisali.
Dakle, to vam daje broj naredbenog retka argumente korisnik
upisali kada je program bio pogubljen.
Dakle, ako je vaš program pokrenuti dot slash pohlepni,
i unutar vaše pohlepni programirati glavnu ulogu
ima deklaraciju int int glavna argc, niz argv uglate zagrade, a zatim
argc u tom slučaju je jedan.
Sada primijetite da ne Izračunaj koliko stvari
korisnik upisali nakon naziva programa.
Ime Program sama broji kao naredbenog retka argument za.
>> Dakle dot slash pohlepni, u tom slučaju, argc jedan.
Ako korisnik upisali kose crte pohlepni 1024 CS50 na naredbenog retka, argc u tom slučaju
će biti tri.
I znamo to jer način da podjela između žice
je otkriti je li tu je prostor ili karticu,
ili nešto slično da je između njih.
Dakle, bilo koji iznos od bijelog prostora, tzv, između vrijednosti upisali naredbenog retka
pokazuje koliko postoje.
Dakle dot slash pohlepni mjesto koje obračunski 1024 mjesta CS50, argc, u tom slučaju, tri.
>> Argv je argument vektor.
Vektor, usput, je samo druga riječ za niz,
i to je niz koji pohranjuje žice.
Jedan izraz po elementu, što je žice koje korisnik zapravo
upisali na naredbenog retka kada je program bio pogubljen.
Sada, kao što je slučaj s bilo polje, ako vas
sjećam iz naše rasprave o polja, prvi element argv
uvijek će se naći na argv uglata zagrada nula.
To je prvi indeks od argv polja.
Tako da will-- i zapravo, da će uvijek biti naziv programa,
uvijek će se nalaziti na argv uglata zagrada jednaka nuli.
>> Posljednji element argv uvijek nalazimo na argv uglatim zagradama argc minus jedan.
Vidite li zašto?
Sjeti se kako je mnoge elemente postoje u tom nizu.
Pa, znamo da je that-- argc broj elemenata.
Ako korisnik upisali tri stvari naredbenog retka, argc tri.
No, budući da je u C, kada radimo s polja, svaki element polja,
ili bolje rečeno indeksi polje, početi od nule.
Ako imamo tri elementa u našem Niz imamo element na argv nula,
element na argv jednom, i element na argv dva.
Nema elemenata na argv tri, te niz veličine tri.
Dakle, to je razlog zašto je posljednja element argv može uvijek
naći na argv trgu Nosači argc minus jedan.
>> Dakle, pretpostavimo korisničke izvršava pohlepni programa kao follows--
ako se upišete u naredbenog retka točka slash pohlepni prostor 1024 svemirski CS50,
i iz nekog razloga mi smo već pripremio naš pohlepni programa
znati i raditi s njima naredbenog retka argumente.
Nismo ranije kada smo radili na njemu za pohlepni problema,
ali recimo sada smo modificirati tako da radimo postupak
argumenti naredbenog retka na neki način.
U tom slučaju, argv nula je točka slash pohlepni.
Što je argv jedan?
Pa, to je 1024, zar ne?
To je 1024, ali ovdje je stvarno važno distinction--
sjećaš li se tip podataka argv?
>> Ona pohranjuje žice, zar ne?
No, to izgleda kao 1024 cijeli broj vrijednosti.
To je stvarno važno razlika, a zapravo je
će postati nešto što vas naići u kasnijim problemima.
Sve u argv je pohranjuju kao string.
Dakle argv nečiji sadržaj su string jedan, nula, dva, četiri,
koja se sastoji od tih četiri znaka.
To je kao da je korisnik upisali jedan, nula, dva, četiri
kao pojedinačne slova ili znakova.
Nije cijeli broj 1024 i tako da ne mogu izravno
raditi s njim rekavši int 1.000 ili umjesto int x jednaka argv jedan minus 24.
>> Intuitivno, možda ćete misliti da kao, u redu, ali to je 1024 minus 24,
pa je x jednak 1.000.
Ali, u stvari, to nije slučaj, jer argv jedan niz.
Niz 1024.
Sada je funkcija koja može biti koristiti za pretvaranje konce cijele brojeve.
Neću pokvariti za vas sada, ali siguran sam da Zamyla
rado će vam reći o tome u prohod za buduće probleme.
Ali, također možete naći Problemi volimo-članovima isprika
mene, funkcije koje bi učiniti u vezi 50,
ako idete u referentnom priručniku možete pronaći funkciju koja
učinit će to pretvaranje za vas.
Ali opet, u prohod za buduće problema,
Zamyla će rado ti što reći funkcija
to je da će pretvoriti string 1024 do cijelog broja 1024.
>> U redu, tako da se kreće dalje.
Mi smo pokriveni našu argv nulu, mi smo pokriveni argv jedan.
Što je u argv dva?
CS50.
To je vjerojatno jedan prilično samorazumljivo.
Što je u argv tri?
Pa opet, mi ne znamo, zar ne?
Imamo niz veličine tri, to je kako mnogi elementi korisnik
upisali na naredbenog retka, pa ako idemo na argv tri,
sada smo prekoračenju granica naše ponude.
Prevodilac će nam to učiniti, nema intuitivno problem s njim,
ali u smislu zapravo što se događa dogoditi, ne znam.
To ovisi o tome što je nalazi u memoriji gdje
argv tri bi se očekivalo da se.
I tako smo mogli završiti uzimajući daleko Škot besplatno.
Više nego vjerojatno ne, osobito kada radite s argv razliku
polja na bilo koji drugi to je u našem programu,
mi smo vjerojatno će patiti greška segmentacije. Pa opet,
biti sigurni da ne prekoračiti granice Vaše polja, osobito argv,
s obzirom na visok stupanj značaj u svoje programe.
>> Ja sam Doug Lloyd.
Ovo je CS50.