>> [MUZYKI]
>> DOUG LLOYD: W porządku, więc niech mówić o argumenty linii poleceń.
Tak więc, o ile w trakcie dość znacznie wszystkich programów
Prawdopodobnie rozpoczął jak this-- int main pustkę.
Byliśmy zbierania wprowadzone przez użytkownika, jeśli go potrzebujesz
w programach, takich jak Program Mario np
przez w-programie monity.
Nie potrzeba do zmiany deklaracja głównym,
bo zamiast wewnątrz głównego my tylko powiedzieć, można nazwać to, aby uzyskać int.
Jak duży chcesz piramida być?
Albo można nazwać to, aby float--, jak dużo zmian
miałbym wyjścia dla użytkownika?
>> Jest też inny sposób, choć, i jeśli chcemy naszych użytkowników
aby móc zapewnić Dane do naszego programu
w czasie wykonywania, a nie czas program jest uruchomiony,
subtelna różnica, ale czasem bardzo użyteczną,
Potrzebujemy nowej formy deklarując głównym.
Nie możemy użyć int main pustkę, jeśli chcemy zbierania innych danych w wierszu poleceń
gdy użytkownik uruchamia program, stąd argumenty wiersza polecenia.
>> Aby zebrać te wiersza polecenia Argumenty z użytkownikiem,
zmienić deklarację Głównym wyglądać this-- int
Główne, otwarty nawias, int argc, przecinek, Ciąg argv, nawiasy kwadratowe,
a następnie otworzyć nawias klamrowy.
Więc co to oznacza już?
Cóż, mijamy w dwóch parametrów, lub argumenty, albo wejść do głównego.
Jeden, liczbą całkowitą o nazwie argc, a drugi jest co?
Jest to tablica łańcuchów, prawda?
Widzimy, że zapis wspornik kwadratowych.
Jest to tablica łańcuchów.
To nie jest pojedynczy łańcuch, to tablica łańcuchów.
I te dwa argumenty, argc i argv, pozwalają wiedzieć, jakie dane użytkownika
przedstawił w wierszu poleceń i jak wiele
przewidziane w linii poleceń.
Dość przydatne rzeczy do pracy.
>> Argc oznacza liczby argumentów, a trzeba wiedzieć, na drodze,
że można zadzwonić argc cokolwiek chcesz.
Możesz zadzwonić argv co chciałeś.
Są to tylko konwencjonalne nazwy , które używamy do them-- liczby argumentów,
i jak zobaczymy za chwilę, wektor argument argv.
Ale nie musisz do nich zadzwonić argc i argv, jeśli nie chcesz,
ale tradycyjnie, że to, co robimy.
>> Więc tak, argc, liczba argumentów.
Jest to zmienna całkowita typu i tak, jak można się spodziewać, jeśli mamy dwie rzeczy
że jedziemy do znalezienia się, co to są wpisane
i ile stuff użytkownik wpisał, argc jest
powie nam, jak bardzo nadziać użytkownik wpisał.
Więc to daje liczbę Argumenty wiersza polecenia użytkownika
wpisane, gdy program został stracony.
Więc, gdy Twój program jest uruchomić dot slash chciwy,
i wewnątrz twój chciwy zaprogramować funkcję main
ma deklaracja int int argc głównym, Ciąg argv nawiasów kwadratowych, a następnie
argc w tym przypadku jest jeden.
Zauważcie, że nie Policz, ile rzeczy
użytkownik po wpisaniu nazwy programu.
Sama nazwa programu liczy jako argument wiersza poleceń.
>> Więc dot slash chciwi, w że sprawa, argc jest jeden.
Jeśli użytkownik wpisze slash chciwy 1024 CS50 w linii poleceń, argc w tym przypadku
będzie trzy.
I wiemy, że to dlatego, że sposób, w jaki że podział między strunami
wykrycia, czy jest miejsce, czy karta,
czy coś takiego między nimi.
Więc każda ilość białej przestrzeni, tak zwane, pomiędzy wartościami wpisaniu wiersza polecenia
wskazuje, ile ich jest.
Więc dot slash chciwy SPACE 1024 miejsca CS50, argc, w tym przypadku, to trzy.
>> Argv jest wektorem argumentem.
Wektor, nawiasem mówiąc, jest po prostu inne słowo na tablicy,
i jest tablicą która przechowuje ciągi.
Jeden łańcuch na element, który jest struny, że użytkownik w rzeczywistości
wpisane w linii poleceń kiedy program został stracony.
Teraz, tak jak w przypadku z każdym tablicy, jeśli Ciebie
pamiętam z naszej dyskusji tablice, pierwszy element argv
zawsze będzie można znaleźć w argv nawiasach kwadratowych zera.
To pierwszy spis tablicy argv.
Tak, że will-- i faktycznie, że wola zawsze być nazwa programu,
zawsze znajdować się w argv nawias kwadratowy zero.
>> Ostatnim elementem argv zawsze znajduje w argv nawiasach kwadratowych argc minus jeden.
Czy widzisz, dlaczego?
Pamiętam, jak wiele elementów istnieje w tablicy.
Wiemy, that-- to Numer argc elementów.
Jeśli użytkownik wpisze trzy rzeczy na linia poleceń, argc jest trzy.
Ale dlatego, wc, kiedy pracujemy z tablicami, każdy element tablicy,
lub raczej indeksy tablica, zaczynają się od zera.
Jeśli mamy trzy elementy w naszych tablica, mamy element w argv zerowej,
element w argv jeden, i element w argv dwa.
Nie ma elementu w argv trzy, i tablicę wielkości trzech.
Więc dlatego ostatni element argv zawsze można
pod adresem argv placu wsporniki argc minus jeden.
>> Więc załóżmy Skrypt wykonywany użytkowników chciwi Program jako follows--
jeśli wpisać kropkę wiersza polecenia slash chciwy przestrzeni kosmicznej CS50 1024,
i niezależnie od powodu mamy już przygotowane nasz chciwy programu
poznać i pracować z nich argumenty wiersza polecenia.
Nie wcześniej, kiedy pracował na nim przez chciwego problemu,
ale powiedzmy, że mamy teraz zmodyfikowany to tak, że proces nie
argumenty wiersza polecenia w jakiś sposób.
W tym przypadku, argv zera jest kropka ukośnik chciwi.
Co znajduje się w argv jeden?
Cóż, jest to 1024, prawda?
To jest 1024, ale tu jest naprawdę ważne distinction--
Pamiętasz typ danych argv?
>> Przechowuje łańcuchy, prawda?
Ale wygląda na to, 1024 jest liczbą całkowitą.
To jest naprawdę ważne rozróżnienie, a jest w rzeczywistości
stanie się coś, co Cię mogą napotkać w późniejszych problemów.
Wszystko w argv jest przechowywane jako ciąg znaków.
Tak więc zawartość argv czyjeś są Ciąg jeden, zero, dwa, cztery,
składający się z tych czterech znaków.
To tak, jakby użytkownik wpisał Jeden z nich, zero, dwa, cztery
jako pojedyncze litery lub znaki.
Nie jest to liczba całkowita 1024, a więc nie mogą bezpośrednio
pracy z nim, mówiąc, int 1000, lub a int x równa argv jeden minus 24.
>> Intuicyjnie, możesz pomyśleć, że tak, OK, dobrze, że to jeden tysięcydwadzieściacztery minus 24,
to x wynosi 1,000.
Ale w rzeczywistości, to nie przypadek, bo argv jeden jest łańcuchem.
Ciąg 1024.
Teraz nie jest to funkcja, która może być użyty do konwersji ciągów do liczb całkowitych.
I nie zepsuje to za Ciebie teraz, ale jestem pewien, Zamyla
będzie szczęśliwy mogąc poinformować o tym w poradniku dla przyszłych problemów.
Ale można też znaleźć Problemy like-- usprawiedliwienia
mnie, funkcje, które zrobić w odniesieniu 50,
jeśli pójdziesz do poradnik można znaleźć funkcję, która
zrobi to za ciebie.
Ale znowu, w poradniku dla przyszłego problemu
Zamyla chętnie powiedzieć, co funkcja
to jest, który będzie przetwarzać Ciąg 1024 do całkowitej liczby 1024.
>> W porządku, więc przejściem.
Omówiliśmy nasze argv zera, omówiliśmy argv jeden.
Co znajduje się w argv dwa?
CS50.
Że jedna chyba dość oczywiste.
Co znajduje się w argv trzech?
Cóż znowu, my naprawdę nie wiemy, prawda?
Mamy tablicę wielkości trzech, to jak wiele elementów użytkownik
wpisane w linii poleceń, więc jeśli idziemy do argv trzy,
jesteśmy teraz przekroczenia granice naszej tablicy.
Kompilator pozwoli nam to zrobić, nie ma z tym problem, intuicyjne,
ale pod względem właściwie o co chodzi się stało, nie wiem.
To zależy od tego, co jest znajduje się na pamięć, w której
argv trzema byłoby spodziewać.
A więc możemy skończyć uciec bez szwanku darmo.
Bardziej prawdopodobne niż nie, zwłaszcza gdy pracujesz z argv w przeciwieństwie
do innych macierzy to w naszym programie,
jesteśmy prawdopodobnie będzie cierpieć usterka segmentacji. Więc jeszcze raz,
Nie należy się upewnić przekroczyła granic swoich tablic, szczególnie argv,
ze względu na jego wysoki stopień Znaczenie w swoich programach.
>> Jestem Doug Lloyd.
To CS50.