>> [Muzikos grojimo]
>> Doug LLOYD: Gerai, tad kalbėti apie komandų eilutės argumentus.
Taigi, iki šiol žinoma gana kiek visi jūsų programas
tikriausiai prasidėjo kaip this-- int main tuštumos.
Mes jau surinkti naudotojo įvesties jei mums reikia
mūsų programas, kaip antai Mario programa, pavyzdžiui,
per-programos instrukcijas.
Mes nereikia keisti Pagrindines deklaracija,
nes vietoj viduje pagrindinis mes tiesiog pasakyti, jūs galite jį vadiname gauti int.
Kaip didelė norite piramidės būti?
Arba galite jį vadiname gauti float-- Kiek kaita
turėčiau išėjimo į vartotojas?
>> Yra ir kitas būdas, nors, ir jei mes norime, kad mūsų vartotojai
, kad būtų galima nustatyti duomenis į mūsų programą
runtime vietoj, o programa veikia,
subtilus skirtumas, bet kartais labai naudinga viena,
mums reikia naujos formos deklaruojant pagrindinis.
Mes negalime naudoti int main negaliojančiu, jei norime rinkti kitus duomenis komandų eilutės
kai vartotojas paleidžia programą, taigi komandų eilutės argumentai.
>> Rinkti šias komandinės eilutės argumentai iš vartotojo,
pakeisti savo deklaraciją Pagrindinis atrodyti this-- int
Pagrindiniai, atviros paren, int argc, kablelis, styginių argv, skliausteliuose,
ir tada atidaryti garbanotas petnešomis.
Taigi, ką tai reiškia, kad jau?
Na, mes perduodame dviem parametrais, ar argumentų, ar įėjimai į pagrindinį.
Vienas iš jų, sveikasis skaičius vadinamas argc, o kita yra kas?
Tai eilučių masyvas, tiesa?
Mes matome, kad kvadratinių laikiklis notacijos.
Tai eilučių masyvas.
Tai nėra atskira eilutė, tai yra eilučių masyvas.
Ir šie du argumentai, argc ir argv, leidžia jums žinoti, ką duomenų vartotojas
numatė komandų eilutės ir kiek daug jie
teikiamos komandų eilutę.
Gražūs naudingų dalykų dirbti.
>> Argc reiškia argumentų skaičius, ir jūs turėtumėte žinoti, beje,
, kad galėtumėte skambinti argc ką nori.
Galite skambinti argv ką norėjo.
Tai yra tik įprastiniai pavadinimai kad mes naudojame them-- argumentų skaičius,
ir kaip mes pamatysime per sekundę, argumentas vektorius, argv.
Bet jūs neturite juos vadiname argc ir argv jei nenorite,
bet tradiciškai, kad tai, ką mes darome.
>> Taigi bet kokiu atveju, argc argumentas, skaičius.
Tai sveikas tipo kintamasis ir taip, kaip galima tikėtis, jei mes turime du dalykus
kad mes ketiname būti rasti , ką jie įvedėte
ir kiek stuff vartotojas įvedėte, argc yra
norėčiau papasakoti mums, kiek Daiktai vartotojui įvedėte.
Taigi ji suteikia jums skaičių komandų eilutės argumentai vartotojas
atspausdintos, kai programa buvo įvykdyta.
Taigi, jei jūsų programa yra paleisti dot velniop gobšus,
ir viduje jūsų godus programuoti savo pagrindinę funkciją
turi deklaracija int main int argc, styginių argv skliaustus, tada
argc šiuo atveju yra vienas.
Dabar pastebėsite mes ne suskaičiuoti, kiek daug dalykų
vartotojas įvedėte po programos pavadinimu.
Pati programa skaičiuoja vardas kaip komandinės eilutės argumentas.
>> Taigi dot velniop godus, į Tokiu atveju argc yra vienas.
Jei vartotojas įvedėte velniop gobšus 1024 CS50 komandų eilutės, argc tokiu atveju
būtų trys.
Ir mes žinome tai, nes kelias , kad ryšys tarp stygos padalinys
aptinkamas ar yra tarpas, arba kortelę,
ar kažką panašaus, kad tarp jų.
Taigi bet tarpas suma, taip vadinamas, tarp vertybių įvedėte komandinės eilutės
rodo, kiek yra.
Taigi dot velniop gobšus erdvė 1024 erdvę CS50, argc, šiuo atveju, yra trys.
>> Argv yra argumentas vektorius.
Vektorius, beje, yra tik vienas žodis masyvą,
ir tai yra matrica kuris saugo eilutes.
Vienas eilutė į elementui, kuris yra stygos, kad vartotojo faktiškai
įvedėte komandų eilutės kai programa buvo įvykdyta.
Dabar, kaip yra šiuo atveju su bet masyvas, jei jums
prisiminti iš mūsų diskusija matricos, pirmasis elementas argv
visada bus galima rasti ne argv kvadratinį laikiklį nulio.
Štai pirmasis puslapis iš argv masyvo.
Taigi, kad will-- ir tai, kad valia visada bus programos pavadinimas,
visada bus įsikūręs argv kvadratinių laikiklis nulis.
>> Paskutinis elementas argv visada yra ne argv laužtiniuose skliaustuose argc minus vienas.
Ar matote, kodėl?
Prisiminkite, kaip daug elementų egzistuoja šiame masyve.
Na, mes žinome that-- tai argc skaičius elementais.
Jei vartotojas įvedėte tris dalykus komandų eilutės, argc yra trys.
Bet kadangi C, kai mes dirbame su matricomis, kiekvienas iš masyvo elementas,
ar veikiau indeksai masyvas, pradėti nuo nulio.
Jei mes turime tris elementus mūsų masyvas, mes turime elementą argv nulis,
ne argv vienas elementas, ir ne argv dviejų elementų.
Nėra ne argv elementas trys, o jų dydžio trijų masyvo.
Štai kodėl paskutinis elementas argv visada galite
rasti argv aikštėje skliausteliuose argc atėmus vieną.
>> Taigi tarkime, kad naudotojo vykdo gobšus programa kaip follows--
jei jie tipo komandų eilutės tašku slash gobšus erdvę 1024 tarpo CS50,
ir dėl kokios nors priežasties mes jau parengė mūsų gobšus programą
žinoti ir dirbti su jais komandų eilutės argumentai.
Mes ne anksčiau, kai mes dirbome apie tai, kad gobšus problemos,
bet tarkim mes dabar keistas tai, kad mes galime padaryti procesą
komandų eilutės argumentai tam tikru būdu.
Šiuo atveju, argv nulį yra taškas velniop godus.
Kas argv viena?
Na, tai 1024, tiesa?
Tai 1024, bet čia yra tikrai svarbu distinction--
Ar pamenate duomenų tipą argv?
>> Jis saugo eilutes, tiesa?
Tačiau atrodo, kad 1024 yra sveikasis skaičius vertė.
Tai tikrai svarbu atskirti ir yra iš tikrųjų
ketina tapti kažkas, kad jūs gali susidurti su vėlesniais problemų.
Viskas argv yra saugomi kaip eilutę.
Taigi argv vieno asmens turinys yra seka viena, lygus nuliui, dviejų, keturių,
susidedantis iš šių keturių simbolių.
Tai taip, jei vartotojas įvedėte viena, lygus nuliui, dviejų, keturių
kaip atskirų raidžių ar simbolių.
Tai nėra sveikas skaičius, 1024, ir todėl jūs negalite tiesiogiai
dirbti su juo, sakydamas, int 1000 arba o int x lygus argv vieną atėmus 24.
>> Intuityviai, galite galvoti apie, kad kaip, gerai, gerai, kad tai 1,024 atėmus 24,
taip, x yra lygus 1,000.
Bet iš tikrųjų, tai ne tas atvejis, nes argv vienas yra eilutė.
Styga 1024.
Dabar yra funkcija, kuri gali būti naudojama konvertuoti stygos sveikieji skaičiai.
Aš ne sugadinti tai už jus dabar, bet aš tikiu, kad Zamyla
bus malonu jums pasakyti apie jį už būsimą problemą Walkthrough.
Bet jūs taip pat galite rasti Problemos like-- pasiteisinimas
man, kad funkcijos būtų tai padaryti nuoroda 50,
jei jūs einate į atskaitos vadovas galite rasti funkciją, kuri
bus padaryti šį konvertavimą už jus.
Bet vėl, į rankos būsimos problemos,
Zamyla mielai pasakyti, ką funkcija
ji yra, kad konvertuoja Styga 1024 sveikojo skaičiaus 1024.
>> Visos teisės, todėl pereinant.
Mes padengti mūsų argv nulį, mes apėmė argv vieną.
Kas yra argv du?
CS50.
Tai vienas tikriausiai gana savaime suprantama.
Kas yra argv tris?
Na kartą, mes tikrai nežino, tiesa?
Mes turime iš dydžio trijų masyvą, tai kaip daug elementų vartotojas
įvedėte komandų eilutės, Taigi, jei mes einame į argv trys,
mes dabar peržengimo Mūsų masyvo ribų.
Kompiliatorius leis mums tai padaryti, nėra intuityvus problema su juo,
tačiau, kalbant apie tai, kas vyksta iš tikrųjų taip atsitiktų, mes tikrai nežino.
Tai priklauso nuo to, kas yra įsikūręs atmintį, kurioje
argv tris būtų galima tikėtis, kad bus.
Ir taip mes gali baigtis Getting Away Scot nemokamai.
Labiau tikėtina nei ne, ypač kai dirbate su argv kaip priešprieša
į bet kurią kitą masyvo tai mūsų programoje,
mes tikriausiai kenčia segmentacijos kaltė. Taigi dar kartą,
būti tikri, kad peržengti ribas Jūsų matricos, ypač argv,
atsižvelgiant į jo didelis svarbą savo programose.
>> Aš Doug Lloyd.
Tai CS50.