>> [Zenelejátszási]
>> DOUG LLOYD: Rendben, szóval beszélni parancssori.
Szóval, eddig során elég sokat az összes programot
Valószínűleg kezdett mint this-- int main semmis.
Már gyűjtöm felhasználói ha szükségünk van rá
a mi programok, mint például a Mario programot, például,
in-programban megjelenő utasításokat.
Mi már nem szükséges módosítani A nyilatkozat fő,
mert ahelyett belsejében fő vagyunk csak azt mondom, lehet nevezni, hogy int.
Mekkora akarsz a piramis lenni?
Vagy lehet nevezni, hogy float-- mennyit változás
tenném kimenetet a felhasználó?
>> Van egy másik utat, bár, és ha azt akarjuk, hogy a felhasználók
hogy képes legyen biztosítani adatokat programunk
futásidőben helyett, míg A program futása,
egy finom különbségtételt, de néha egy nagyon hasznos egy,
szükségünk van egy új formája nyilvánító fő.
Nem tudjuk használni int main veszti, ha azt akarjuk, hogy gyűjteni egyéb adatokat a parancssori
ha a felhasználó lefuttatja a programot, így parancssori.
>> Összegyűjteni ezeket a parancssori érvek a felhasználó,
változtassa meg a nyilatkozat Fő, hogy néz ki, mint this-- int
fő, nyitott zárójel, int argc, vessző, karakterlánc argv, szögletes zárójelben,
majd nyissa kapcsos zárójel.
Szóval mit jelent ez már?
Nos, mi elhaladó két paramétert, vagy érveket, vagy bemenetek a fő.
Egy, egy egész szám úgynevezett argc, és a másik az, ami?
Ez egy tömböt, ugye?
Látjuk, hogy szögletes zárójel jelöléssel.
Ez egy tömböt.
Ez nem egyedi karaktersorozat, ez egy tömböt.
És ez a két érv, argc és argv, lehetővé teszi, hogy tudom, milyen adatokat a felhasználó
megadta a parancssori és hány dolgokat,
amennyiben a parancssori.
Elég hasznos dolgok dolgozni.
>> ArgC jelentése érvet száma, és tudnunk kell, az úton,
hogy meg tudná hívni argc amit akarsz azt.
Hívhatjuk argv amit csak akart.
Ezek csak egyezményes nevek amit használunk a them-- érvet száma,
és mint látni fogjuk, egy második, érv vektor, argv.
De nem kell őket hívni argc és argv ha nem akarja,
de a hagyományos, ez az, amit csinálunk.
>> Mindegy, argc, az érvelés száma.
Ez egy egész típusú változó, és így, mint várható, ha van két dolog,
hogy megyünk lehet találni hogy mi ezeket a beírt
és mennyi cucc a felhasználói gépelt, ARGC
fog mondani nekünk, hogy mennyi tömje a felhasználó begépelt.
Szóval ez ad egy sor parancssori felhasználói
gépelt, amikor a program végrehajtása.
Tehát, ha a program fuss dot perjel kapzsi,
és azon belül a kapzsi beprogramozni a fő funkciója
az a deklaráció int main int argc, karakterlánc argv szögletes zárójelben, majd
argc ebben az esetben az egyik.
Most észre mi nem hány dolgot
a felhasználó begépelt a program neve után.
A program neve is számít mint egy parancssori argumentum.
>> Tehát pont perjel kapzsi, a Ez esetben argc az egyik.
Ha a felhasználó begépelt perjel kapzsi 1024 CS50 A parancssori, argC ebben az esetben
lenne három.
És mi tudjuk ezt, mert az utat hogy a szakadék a húrok
érzékeli, hogy vajon van egy hely, vagy egy lapon,
vagy valami ilyesmi közöttük.
Tehát bármilyen mennyiségű fehér tér, az úgynevezett, közötti értékek beírt parancssori
azt jelzi, hogy hány van.
Tehát pont perjel kapzsi tér 1024 térben CS50, argc, ebben az esetben három.
>> Argv az az érv vektor.
Vektor, mellesleg, csak egy másik szó egy tömbben,
és ez egy tömb amely tárolja szálakat.
Egy húr per elem, amely A húrok hogy a felhasználó valóban
gépelt a parancssori amikor a program végrehajtása.
Most, mint a jelen esetben minden tömb, ha
felidézni a mi vita tömbök, az első eleme a argv
mindig fog találni A argv szögletes zárójel nulla.
Ez az első index Az argv tömb.
Annak érdekében, hogy will-- és az tény, hogy akarata mindig a program nevét,
mindig található argv szögletes zárójel nulla.
>> Az utolsó eleme argv mindig megtalálható A argv szögletes zárójelben argc mínusz egy.
Látod, hogy miért?
Ne feledje, hogy hány elem létezik ebben a tömbben.
Nos, tudjuk, hogy ez hogy-- argc elemek száma.
Ha a felhasználó begépelt három dolgot A parancssori, argc három.
Hanem azért, mert a C-ben, amikor dolgozunk tömbök minden eleme a tömb,
vagy inkább az indexek A tömb, nulláról indulnak.
Ha van három elem a mi tömb, van egy elem a argv nulla,
eleme a argv egy, és elemeként a argv kettő.
Nincs olyan elem, a argv három, és egy sor méretű három.
Szóval ezért az utolsó eleme argv mindig
találhatók argv téren zárójelben argc mínusz egy.
>> Tehát tegyük fel, a felhasználó végrehajt A kapzsi program follows--
ha nem írják be a parancssori dot perjel kapzsi tér 1024 térben CS50,
, és bármilyen okból voltunk már elkészült a kapzsi programot
megismerni és dolgozni ezekkel parancssori.
Mi korábban nem, amikor dolgoztunk rajta a mohó probléma,
de mondjuk mi már most módosított úgy, hogy mi a folyamat
A parancssori valamilyen módon.
Ebben az esetben, argv nulla a dot perjel kapzsi.
Mi argv egyet?
Nos, ez 1024, nem igaz?
Ez az 1024, de itt van egy Nagyon fontos distinction--
emlékszel az adatok típusát argv?
>> Ez tárolja húrok, ugye?
De úgy néz ki, mint 1024 jelentése egész szám, értéke.
Ez egy nagyon fontos különbséget, és tulajdonképpen
fog válni valami, amit ütközhet, a későbbi problémák.
Mindent ARGV tárolni, mint egy húr.
Tehát argv ember tartalma a húr egy, nulla, két, négy,
amely e négy karakter.
Olyan, mintha a felhasználó begépelt egy, nulla, kettő, négy
mint az egyes betűk vagy karakterek.
Ez nem a egész szám 1024, és így nem lehet közvetlenül
a munka vele, mondván int 1000, vagy inkább int x = argv egy mínusz 24.
>> Ösztönösen, azt gondolhatja, hogy as, OK, nos ez 1024 mínusz 24,
így x egyenlő 1,000.
Valójában azonban nem ez a helyzet, mert argv egyik egy húr.
A karakterlánc 1024.
Most van egy funkció, amely lehet felhasználni, hogy húrok egészek.
Nem fogom elrontani az Ön számára most, de biztos vagyok benne, Zamyla
boldog lesz, hogy megmondja róla Az útmutató a jövőbeli problémát.
De akkor is talál problémákat általam elvártnál mentség
Számomra funkciók, amelyek Ehhez a referencia-50,
ha megy a kalauz találsz egy funkciót, hogy
teszi ezt a konverziót neked.
De ismétlem, a végigjátszás egy jövőbeli probléma,
Zamyla örömmel megmondja, hogy mi funkció
ez, amely konvertálja a karakterlánc 1024 az egész 1024.
>> Rendben, tehát mozog.
Már borította argv nulla, már lefedett argv egyet.
Mi van argv kettő?
CS50.
Ez az egyik talán szép magától értetődő.
Mi van argv három?
Hát megint, nem igazán tudom, ugye?
Van egy sor mérete három, ennyi elemeket felhasználó
gépelt a parancssori, tehát ha megyünk argv három,
mi most túllépve határain tömbben.
A fordítóprogram tegyük ezt, nincs intuitív gond vele,
de tekintve tulajdonképpen mi folyik történni, mi nem igazán tudom.
Attól függ, mi a található a memóriában, ahol
argv három lenne várható.
És így is a végén megússzák büntetlenül szabad.
Valószínűbb, mint nem, különösen, ha dolgoztok argv szemben
bármely más tömb ez a programunk,
mi valószínűleg fog szenvedni szegmens hiba. Tehát újra,
Ügyeljen arra, hogy ne lépje át a határokat a tömbök, különösen argv,
tekintettel annak magas fokú fontosságú a programokat.
>> Én Doug Lloyd.
Ez CS50.