[Muzika] DOUG Lloyd: Të gjithë të drejtë, kështu që le të flasin për argumente command-line. Pra, deri më tani gjatë goxha shumë të gjitha programet tuaja kanë filluar ndoshta si this-- zbrazëti int main. Ne kemi qenë mbledhur input përdorues në qoftë se ne kemi nevojë për atë në programet tona, të tilla si Programi Mario, për shembull, nga në-programi bën. Ne nuk kemi nevojë për të ndryshuar deklarata e kryesor, sepse në vend brenda ne kryesore them vetëm, ju mund të telefononi atë për të marrë int. Sa i madh ju dëshironi piramidale të jetë? Ose ju mund të telefononi atë për të marrë float-- ndryshojë mënyrën se si shumë Unë duhet të prodhimit të përdoruesit? Nuk është një tjetër mënyrë edhe pse, dhe në qoftë se ne duam përdoruesit tonë të jenë në gjendje të ofrojnë të dhëna për programin tonë në kohën e duhur në vend të kohë programi është i rrjedhshëm, një dallim delikate, por nganjëherë një shumë të dobishme, ne kemi nevojë për një formë të re të deklaruar kryesore. Ne nuk mund të përdorim boshllëkun int main në qoftë se ne duam të të mbledhë të dhëna të tjera në command-line kur përdoruesi shkon programi, prandaj argumente command-line. Për të mbledhur këto command-line Argumentet nga përdoruesit, ndryshojë deklaratën tuaj të kryesor për të duken si this-- int kryesore, paren hapura, int argc, presje, string argv, kllapa katrore, dhe pastaj të hapur mbajtëse kaçurrel. Pra, çfarë do të thotë tashmë? E pra, ne jemi duke kaluar në dy parametra, apo argumentet, apo inputet për kryesor. Një, një numër i plotë i quajtur argc, dhe tjetra është ajo? Është një grup i tela, e drejtë? Ne e shohim se simbol katror kllapa. Është një grup i strings. Kjo nuk është një varg individ, është një grup i strings. Dhe këto dy argumente, argc dhe argv, të mundësojë që të dini se çfarë të dhënave të përdoruesit ka siguruar në command-line dhe sa gjëra të dhënë në command-line. Gjëra mjaft të dobishme për të punuar me të. Argc qëndron për numërimin argument, dhe ju duhet të dini, nga rruga, që ju mund të telefononi argc çdo gjë që ju doni atë. Ju mund të telefononi argv çdo gjë që dëshironte. Këto janë emrat e vetëm konvencionale që ne përdorim për të, porsi numërimin argument, dhe si ne do të shohim në një të dytë, vektor Argumenti, argv. Por ju nuk keni për të thirrur ata argc dhe argv në qoftë se ju nuk doni të, por konvencionale, kjo është ajo që ne bëjmë. Pra, gjithsesi, argc, numërimi argumenti. Kjo është një variabël integer-lloj dhe kështu, si ju mund të presin, në qoftë se ne kemi dy gjëra se ne jemi duke shkuar për të gjetur se çfarë këto janë shtypur dhe sa stuff përdorues shtypur, argc është do të na tregoni se sa të stuff përdoruesit shtypur. Pra, kjo ju jep një numër të argumente command-line përdorues shtypur kur u ekzekutua programi. Pra, në qoftë se programi juaj është i drejtuar dot çaj lakmitar, dhe brenda lakmitar tuaj programit funksionin tuaj kryesor ka deklaratë int int kryesor argc, string argv kllapa katrore, atëherë argc në këtë rast është një. Tani vini re, ne nuk bëjmë numërimin e sa shumë gjëra përdoruesi shtypur me emrin e programit. Emri Programi vetë numëron si një argument command-line. Pra dot çaj babëzitur, në se rasti, argc është një. Nëse përdoruesi typed slash babëzitur 1024 CS50 në command-line, argc në këtë rast do të jetë tre. Dhe ne e dimë këtë, sepse rruga se ndarja mes strings është zbuluar është nëse ka një hapësirë, ose nje tab, ose diçka të tillë mes tyre. Pra, çdo shumë hapësirë ​​të bardhë, ashtu-quajtur, midis vlerave shtypur command-line tregon se sa ka. Pra dot çaj hapësirë ​​babëzitur 1024 hapësirë CS50, argc, në këtë rast, është tre. Argv është vektori argumenti. Vector, nga rruga, është vetëm një tjetër fjalë për një grup, dhe kjo është një grup që ruan strings. Një varg për element, i cili është vargjet që përdoruesi në fakt shtypur në command-line kur programi u ekzekutua. Tani, siç është rasti me ndonjë grup, në qoftë se ju kujtojnë nga diskutimit tonë të vargjeve, elementi i parë i argv është gjithmonë do të gjendet në argv kllapa katrore zero. Kjo është indeksi i parë e array argv. Kështu që will-- dhe në fakt, se vullneti gjithmonë të jetë emri i programit, gjithmonë do të jetë e vendosur në argv kllapa katrore zero. Elementi i fundit i argv është gjetur gjithmonë në argv kllapave argc minus një. A e shihni se pse? Mos harroni se si shumë elemente ekzistojnë në këtë grup. E pra, ne e dimë se është that-- Numri argc i elementeve. Nëse përdoruesi shtypur tri gjëra në komanda-line, argc është tre. Por për shkak se në C, kur ne jemi duke punuar me vargjeve, çdo element i vektorit, ose më mirë indekset e array, të fillojë në zero. Nëse kemi tre elemente në tonë grup, ne kemi një element në argv zero, një element në argv një, dhe një element në argv dy. Nuk ka asnjë element në argv tre, dhe një koleksion të madhësisë tre. Pra, kjo është arsyeja pse e fundit element i argv mund gjithmonë të gjenden në sheshin argv argc kllapa minus një. Pra, le të supozojmë që e ekzekuton përdoruesit programi i pangopur si follows-- nëse shkruani në command-line dot çaj babëzitur hapësirë ​​1024 hapësirë ​​CS50, dhe për çfarëdo arsye ne kemi përgatitur tashmë programin tonë lakmitar të njohin dhe të punojnë me këto argumente command-line. Ne nuk e bëri më parë, kur ne kemi punuar në atë për problemin babëzitur, por le të themi që kemi modifikuar tani ajo që ne bëjmë procesin argumente komanda-line në një farë mënyre. Në këtë rast, argv zero është plagë dot lakmitar. Çfarë është argv një? E pra, kjo është 1024, e drejtë? Është e 1024, por këtu është një distinction-- vërtetë e rëndësishme a ju kujtohet llojin e të dhënave e argv? Ajo ruan vargjet, e drejtë? Por kjo duket si 1024 është një vlerë e plotë. Kjo është një të vërtetë e rëndësishme dallim, dhe në fakt është duke shkuar për të bërë diçka që ju mund të hasni në probleme më vonë. Çdo gjë në argv është ruhet si një varg. Pra, përmbajtja argv dikujt janë string një, zero, dy, katër, i përbërë nga këto katër karaktere. Është sikur përdoruesi shtypur një, zero, dy, katër si letra individuale apo karaktere. Ajo nuk është numër i plotë 1024, dhe kështu që ju nuk mund të drejtpërdrejt punojnë me të duke thënë int 1000, ose në vend të int x është e barabartë me një të tillë argv minus 24. Intuitive, ju mund të mendoni për atë si, OK, edhe kjo është 1,024 minus 24, kështu x është i barabartë me 1,000. Por në fakt, kjo nuk është rasti, sepse argv një është një varg. String 1024. Tani ka një funksion që mund të jetë përdoret për të kthyer në vargjet në integers. Unë nuk do të prishin atë për ju tani, por unë jam i sigurt Zamyla do të jetë i lumtur të ju tregojë për atë në walkthrough për një problem në të ardhmen. Por ju mund të gjeni edhe PROBLEMET like-- justifikim mua, funksionet që do të bëni këtë duke iu referuar 50, në qoftë se ju shkoni në udhëzues referimi ju mund të gjeni një funksion që do ta bëjë këtë konvertim për ju. Por përsëri, në walkthrough për një problem në të ardhmen, Zamyla do të jenë të lumtur për po ju them se çfarë funksioni ajo është se do të konvertohet string 1024 në numrin e plotë 1024. Të gjithë të drejtë, kështu duke lëvizur në. Ne kemi mbuluar zero tonë argv, ne kemi mbuluar argv një. Çfarë është në argv dy? CS50. Kjo është ndoshta një shumë vetë-shpjeguese. Çfarë është në argv tre? Mirë përsëri, ne nuk të vërtetë e di, e drejtë? Ne kemi një grup të madhësisë tre, kjo është si shumë elemente përdorues shtypur në command-line, kështu që në qoftë se ne do të shkojmë në argv tre, ne jemi tani tejkaluar caqet e array tonë. Përpiluesit do të na bëjë këtë, nuk ka asnjë problem intuitive me të, por në aspektin e në fakt çfarë po ndodh të ndodhë, ne vërtetë nuk e di. Kjo varet nga ajo që është që ndodhet në memorie ku argv tre do të pritet të jetë. Dhe kështu që ne mund të përfundojë duke u larguar Scot falas. Më shumë gjasa se jo, veçanërisht kur ju jeni duke punuar me argv krahasim çdo grup tjetër kjo është në programin tonë, ne jeni me siguri do të vuajnë një faji segmentimit. Pra, përsëri, të sigurt që të mos kaloj kufijtë e vargjeve tuaja, veçanërisht argv, duke pasur parasysh shkallën e lartë të Rëndësia në programet tuaja. Unë jam Doug Lloyd. Kjo është CS50.