[Грає музика] ДАГ Lloyd: Гаразд, давайте говорити про аргументів командного рядка. Так, досі в ході досить багато всього з ваших програм ймовірно почав як this-- Int основний порожнечу. Ми збирали введення користувачем, якщо нам це потрібно в наших програмах, таких, як Програма Маріо, наприклад, по-програми в підказок. Ми не потрібно змінити декларація основний, бо замість всередині основного ми просто сказати, що ви можете назвати це, щоб отримати Int. Як великий ви хочете піраміда бути? Або ви можете назвати це, щоб отримати float-- як багато змін я повинен виводиться користувачеві? Існує ще один спосіб, хоча, і якщо ми хочемо, щоб наші користувачі щоб бути в змозі забезпечити Дані нашій програмі під час виконання, а не час Програма працює, тонка різниця, але іноді дуже корисним, нам потрібна нова форма декларування основною. Ми не можемо використовувати INT основний порожнечу, якщо ми хочемо, щоб збирати інші дані в командному рядку коли користувач запускає програму, отже аргументи командного рядка. Для збору цих командного рядка Аргументи від користувача, змінити декларацію Основний виглядати this-- Int Основні, відкриті Хлопець, INT ARGC, кома, Рядок ARGV квадратні дужки, а потім відкрити фігурну дужку. Отже, що ж це значить вже? Ну, ми передаємо в двох параметрів, або аргументи, або входи в основний. Один з них, ціле називається ARGC, а інший є що? Це масив рядків, вірно? Ми бачимо, що позначення квадратна дужка. Це масив рядків. Це не окремий рядок, це масив рядків. І ці два аргументи, ARGC і ARGV, дозволяють знати, що дані користувача надав у командному рядку і як багато за умови, в командному рядку. Досить корисні речі для роботи. ARGC виступає за кількістю аргументів, і ви повинні знати, до речі, що ви могли б назвати ARGC все, що ви хочете. Ви можете зателефонувати в ARGV, що ви хотіли. Такими є лише звичайні імена що ми використовуємо для them-- кількістю аргументів, і, як ми побачимо в секунду, Аргумент вектор, ARGV. Але ви не повинні називати їх ARGC і ARGV, якщо ви не хочете, щоб, але умовно, це те, що ми робимо. Так чи інакше, ARGC, кількість аргументів. Це змінна числом типу і так, а Ви могли б очікувати, якщо у нас є дві речі що ми збираємося знаходити , Що вони набрали і скільки Наповніть користувач вводить, ARGC є збираюся розповісти нам, скільки набити користувач ввів. Так що це дає вам ряд Аргументи командного рядка користувач набрали, коли програма була виконана. Так що, якщо ваша програма запустити точка слеш жадібний, і всередині вашої жодній запрограмувати основну функцію має декларації Int Int основний ARGC, Рядок ARGV квадратні дужки, то ARGC в цьому випадку є одним. Тепер зверніть увагу, ми не Порахуйте, скільки речей користувач вводить після імені програми. Сама назва програми розраховує як аргумент командного рядка. Так точка слеш жадібний, в У цьому випадку, ARGC один. Якщо користувач вводить слеш жодній 1024 CS50 в командному рядку, ARGC в цьому випадку буде три. І ми знаємо, що це тому, що шлях що поділ між рядків виявлений чи є простір, або вкладку, або щось подібне, що між ними. Таким чином, будь-який обсяг білого простору, так звані, між значеннями набрав командного рядка показує, скільки є. Так точка слеш жодних простір простір +1024 CS50, ARGC, в цьому випадку, дорівнює трьом. ARGV вектор аргумент. Вектор, до речі, якраз інше слово для масиву, і це є масивом який зберігає рядки. Один рядок для кожного елемента, який є струни, що користувач дійсно введені в командному рядку коли програма була виконана. Тепер, як і у випадку з будь-якого масиву, якщо ви Нагадаємо, з нашого обговорення масиви, перший елемент ARGV завжди буде знайдений в ARGV квадратних дужках нульовий. Це перший індекс масиву ARGV. Так що will-- і справді, що воля завжди бути назва програми, завжди буде розташований на ARGV квадратна дужка дорівнює нулю. Останній елемент ARGV завжди знаходиться в ARGV квадратних дужках ARGC мінус один. Ви бачите, чому? Пам'ятаєте, як багато елементів існують у цьому масиві. Ну, ми знаємо, що це that-- ARGC кількість елементів. Якщо користувач вводить три речі командний рядок, ARGC зо три. Але тому, що в C, коли ми працюємо з масивами, кожен елемент масиву, або, скоріше, індекси масив, почати з нуля. Якщо у нас є три елементи в наших Масив, у нас є елемент в ARGV нульовий, елемент у ARGV однієї, і елемент в ARGV два. Там немає елементу ARGV на три, і масив розміру зо три. Так ось чому останній елемент ARGV завжди можете можна знайти на площі ARGV Кронштейни ARGC мінус один. Отже, давайте припустимо, що користувач виконує жадібний програма, як follows-- якщо вони введуть в командного рядка точка скоротити жодній простір простір тисячі двадцять-чотири CS50, і з якої причини ми в вже підготували нашу програму жодній знати і працювати з ними Аргументи командного рядка. Ми не робили раніше, коли ми працювали на ній жадібним проблеми, але, скажімо, зараз ми змінені так, що ми робимо процес аргументи командного рядка в якійсь мірі. У цьому випадку, ARGV нулю це точка слеш жодній. Що ARGV одним? Ну, це 1024, чи не так? Це 1024, але от Дуже важливо distinction-- Ви пам'ятаєте тип даних ARGV? Він зберігає рядки, вірно? Але, схоже, 1024 є цілим числом. Це дійсно важливо, відмінність, і насправді стане те, що вам може зіткнутися в більш пізніх проблем. Все в ARGV є зберігається у вигляді рядка. Так вміст ARGV своїй є Рядок одним, нуль, два, чотири, що складається з чотирьох символів. Це як якщо б користувач ввів Один з них, дорівнює нулю, два, чотири як окремі букви або символи. Це не ціле число 1024, і тому ви не можете безпосередньо працювати з ним, сказавши, INT 1000, або а INT х дорівнює ARGV один мінус 24. Інтуїтивно, можна подумати, що з а, гаразд, добре, що це мінус 1,024 24 так х дорівнює 1,000. Але насправді, це не так, бо ARGV одна рядком. Рядок тисячі двадцять чотири. Тепер є функція, яка може бути використовується для перетворення рядків у цілі числа. Я не буду псувати це для вас зараз, але я впевнений, що Zamyla будуть раді розповісти вам про це в проходження гри для майбутньої проблеми. Але ви також можете знайти Проблеми like-- виправдання мені, функції, які зробити це у відношенні 50, якщо ви йдете в довідковому керівництві Ви можете знайти функцію, яка зробить це перетворення для вас. Але, знову ж, у керівництві для майбутнього проблеми, Zamyla будуть раді скажу вам, що функція це те, що буде перетворювати рядок від 1024 до цілого числа 1 024. Гаразд, так як рухатися далі. Ми розглянули нашу нулю ARGV, ми розглянули ARGV один. Що в ARGV дві? CS50. Той, ймовірно, досить очевидно. Що в ARGV трьох? Ну знову ж таки, ми насправді не знаю, правильно? У нас є масив розміром три, Ось як багато елементів користувач введені в командному рядку, так що якщо ми йдемо в ARGV зо три, ми тепер переступаючи Межі нашого масиву. Компілятор дозволить нам це зробити, немає інтуїтивно проблема з ним, але з точки зору фактично що відбувається щоб це сталося, ми не знаємо. Це залежить від того, що знаходиться в пам'яті, де ARGV трьох можна було б очікувати, щоб бути. І таким чином, ми могли б закінчити піти безкарним безкоштовно. Швидше за все, ні, особливо, коли ви працюєте з ARGV, на відміну щоб будь-який інший масив це в нашій програмі, ми, ймовірно, буде страждати помилки сегментації. Отже, ще раз, бути впевнені, що не виходять за межі Ваші масивів, особливо ARGV, враховуючи його високий ступінь Важливість у ваших програмах. Я Дуг Ллойд. Це CS50.