[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.