Всем привет!
Недавно начал изучать C++, и не понимаю, зачем принимать 2 аргумента? Один — целое число, а второй — массив, ещё и память выделяется как-то странно без new
. Откуда приходят эти аргументы, и зачем их используют?
Это параметры командной строки, которые могут быть переданы Вашему приложению. Первый аргумент передается по той причине, что встроенные массивы в С/С++ не хранят размер и передача размера - один из способов об этом узнать (можно к примеру договориться, что последний элемент будет нулевым, но это накладывает определенные ограничения).
память выделяется как-то странно без new
память выделяется в другом месте, а в функцию приходит только указатель. Как именно она там выделяется - в данный момент Вас тревожить не должно. Главное помнить правило - "кто память выделяет, тот обычно ее и удаляет". В данном случае компилятор вставит весь необходимый код, который выделит память и освободит. Хотя там ещё и система немного может выделить.
Как же приходят аргументы?
К примеру, Вы можете запустить программу так
myprog param1 param2 param3
в этом случае argc
будет иметь значение 4. argv[1] будет равно param1. argv[3] будет равно param3. Возникает вопрос, а что в нулевом элементе? а там имя программы в том виде, в котором его предоставляет операционная система. То есть, там может быть как myprog, так и имя с полным путем.
Дополнительный материал:
upd:
для любителей стандарта - читать пункт 3.6.1. Там в частности сказано, что официально есть два варианта - int main()
и int main(int argc, char *argv[])
(хотя последний можно записать как int main(int argc, char **argv)
- суть не меняется). Все остальное - на усмотрение компиляторов.
При запуске программы можно указать доп. аргументы в командной строке.
Первый параметр, argc
(argument count) указывает на количество этих аргументов, а второй параметр, argv
(argument vector) сожержит непосредственно сами аргументы переданные при запуске.
Это аргументы командной строки. argc — количество, argv — сам массив аргументов. Можете их вывести на экран и посмотреть, что получится. Нулевым всегда идет название программы, потом — что угодно.
Используется, к примеру, так: Вы пишете что-то для работы с файлами. При запуске программы вы естественно просите пользователя указать путь к файлу, с которым надо работать. Но ведь гораздо удобнее запускать программу из терминала с уже указанным параметром: Admin:~ prog ~/Documents/file1.txt
— в этом случае терминал сам может дописать название файла или еще чего удобного сделать. А в винде можно еще файл на программу перетаскивать (вот тут я не помню точно, как название файла передается).
Опять-таки это только пример — ограничивает вас только ваше воображение.
UPD: пока писал уже ответили))
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
По результатам опроса прошлого года известен список 10 политических деятелей в порядке убывания их популярностиПроведен новый опрос
Здравствуйте:) Вот такой вопрос возник, почему вот этот после выполнения
ЗдравствуйтеЕсть программа, которая ищет ромбы в множестве заданных точек и выводит на экран координаты и площадь самого большого из них
Здравствуйте, не знаю как удалить элемент по заданному номеруМы создаем бинарный файл, в консоль заполняем структуру и она записывается...