[За възпроизвеждане на музика] Дъг LLOYD: Добре, така че нека говорим за аргументи от командния ред. Така че, доколкото в хода доста много по всичките си програми вероятно са започнали като this-- инт основната невалидни. Ние сме били събиране приноса на потребителите, ако имаме нужда от нея в нашите програми, като например Mario програма, например, от в-програма подсказва. Ние не са необходими, за да се промени декларацията за основна, защото вместо вътре в главната ни само да кажа, може да го наречем, за да получите инт. Колко голям искаш пирамидата да бъде? Или може да го наречем, за да получите float-- колко промяна трябва ли изход за потребителя? Има и друг начин обаче, и ако искаме нашите потребители да бъде в състояние да осигури данни на нашата програма по време на изпълнение, вместо докато програмата се изпълнява, коварен разграничение, но понякога много полезен, ние се нуждаем от нова форма на обявяване главната. Ние не можем да използваме инт основната невалидни, ако искаме да събира други данни в командния ред когато потребителят стартира програмата, следователно аргументи от командния ред. За да се събират тези от командния ред аргументи от потребителя, промените вашата декларация за Основната да изглежда като this-- инт Основните, отворени скоба, инт argc, запетая, струнен argv, квадратни скоби, и след това отворете фигурна скоба. И така, какво означава това вече? Е, ние преминаваме през два параметъра, или аргументи, или входове към основната. Едно цяло число, наречено argc, а другият е това? Това е масив от низове, нали? Ние виждаме, че квадратен скоба нотация. Това е масив от низове. Това не е индивидуален низ, това е масив от низове. И тези два аргумента, argc и argv, ви позволи да знам какво данните на потребителя е предвидено в командния ред и колко неща предвидено в командния ред. Доста полезни неща да се работи. Argc щандове за преброяване аргумент, и вие трябва да знаете, между другото, че може да се нарече argc каквото си искам. Можете да се обадите argv каквото си иска. Това са само традиционните имена която ние използваме за them-- брой аргумент, и както ще видим в секунда, аргумент вектор, argv. Но не е нужно да им се обадя argc и argv ако не искате да, но условно, че това, което правим. Така или иначе, argc, броят на аргумент. Това е целочислена променлива тип и така, както е може да се очаква, ако имаме две неща че ние ще трябва да се намери какво те са написали и колко неща на потребител написа, argc е ще ни каже колко натъпча потребителят написали. Така че това дава редица аргументи от командния ред за употреба написали, когато програмата се изпълнява. Така че, ако програмата ви е тичам дот наклонена черта алчни, и във вътрешността на вашия алчни програмирате вашата основна функция има декларация инт основната инт argc на, струнен argv квадратни скоби, а след това argc в този случай е един. Сега ние не забележите брои колко много неща потребителят въведе след името на програмата. Самото име на програмата се брои като аргумент на командния ред. Така че Дот наклонена черта алчни, в този случай, argc е един. Ако потребителят въведе наклонена черта алчни 1024 CS50 в командния ред, argc в този случай ще бъде три. И ние знаем това, защото начинът, че разделението между струните се открива дали има пространство, или в раздела, или нещо подобно между тях. Така че всяка сума от празно пространство, така наречената, между стойностите въведен от командния ред показва колко са. Така че Дот наклонена черта алчни пространство 1024 космоса CS50, argc, че в този случай, е три. Argv е вектор аргумент. Vector, между другото, е просто друга дума за масив, и това е масив която съхранява струни. Един низ на елемент, който е конците, че потребителят действително напечатани в командния ред когато програмата се изпълнява. Сега, както е в случая с всеки масив, ако извикайте от нашата дискусия за масиви, първият елемент на argv винаги ще се намери най argv квадратна скоба нула. Това е първият индекс argv на масива. Така че will-- и в действителност, тази воля винаги да бъде на името на програмата, винаги ще бъде разположен в argv квадратна скоба нула. Последният елемент от argv винаги се среща най argv квадратни скоби argc минус едно. Виждаш ли защо? Помниш ли как много елементи съществува в този масив. Е, ние знаем, че е that-- argc брой елементи. Ако потребителят въведе три неща командния ред, argc е три. Но тъй като в гр, когато ние работим с масиви, всеки елемент на масива, или по-скоро на индексите на масива, започнете от нулата. Ако имаме три елемента в нашата масив, ние имаме един елемент в argv нула, елемент в argv една, и елемент на argv две. Не съществува елемент на argv три, и масив от размера три. Значи затова последният елемент от argv винаги може да да се намери на argv квадрат скоби argc минус едно. Така че нека да приемем, потребителят изпълнява алчни програмата като follows-- ако напишете в точката на командния ред Слаш алчни пространство 1024 космоса CS50, и по някаква причина ние сме вече получава нашата алчни програма да се знае и да работят с тях аргументи от командния ред. Ние направихме по-рано, когато не сме работили върху него за алчни проблема, но нека да кажем, а сега сме модифицирани то така, че ние правим процес аргументите на командния ред, по някакъв начин. В този случай, argv нула е дот наклонена черта алчни. Какво е argv един? Е, това е 1024, нали? Това е 1024, но ето един Наистина е важно distinction-- помниш ли типа данни на argv? Тя съхранява струни, нали? Но изглежда, че 1024 е целочислена стойност. Това е наистина важно разграничение, а всъщност ще се превърне в нещо, което може да срещнете в по-късни проблеми. Всичко в argv е съхраняват като низ. Така съдържанието argv нечии са низ една, нула, две, четири, състояща се от тези четири знака. Това е като че ли потребителят напечатани един, нула, две, четири като отделни букви или символи. Това не е цяло число, 1024, и така не можете директно работи с нея, като казва инт 1000, или а инт х е равно на argv един минус 24. Интуитивно, може би си мислите, че на като, ОК, добре, че е 1024 минус 24, така х е равно на 1,000. Но в действителност, че случаят не е такъв, защото argv един е низ. Низът 1024. Сега има една функция, която може да бъде използва за конвертиране на стрингове да числа. Аз няма да го развалят за вас сега, но аз съм сигурен, Zamyla Ще се радваме да ви кажа за него в помагалото за бъдещ проблем. Но можете да намерите извинение проблеми like-- мен, функции, които биха направите това в референтната 50, ако отидете до референтната ръководство можете да намерите функция, която ще направи това превръщане за вас. Но отново, в помагалото за бъдещ проблем, Zamyla ще се радваме да вие какво функция кажа тя е, която ще конвертирате низ 1024 до цяло число 1,024. Добре, така да преминат. Ние сме обхванати нашата argv нула, ние сме обхванати argv един. Какво има в argv две? CS50. Това е може би една доста очевидно. Какво има в argv три? Ами пак, ние не знаем наистина, нали? Ние имаме масив от размера на три, това е как много елементи на потребителя напечатани в командния ред, така че ако отидем в argv три, ние сега прекрачване пределите на нашата масив. Компилаторът ще нека направим това, че няма интуитивен проблем с него, но от гледна точка на това, което става в действителност да се случи, ние наистина не знам. Тя зависи от това, което е с паметта, където argv три ще се очаква да бъде. И така, ние може да свърши Измъкват се невредим безплатно. По-вероятно, отколкото не, особено когато можете да започнете работа с argv за разлика всяка друга масив това е в нашата програма, ние вероятно ще страдат сегментация вина. Така отново, да се уверите, да не прекрачат границите от вашите редици, особено argv, дал висока степен на значение в програмите си. Аз съм Дъг Лойд. Това е CS50.