Страницы

Поиск по вопросам

среда, 18 декабря 2019 г.

Для чего в main (int argc, char *argv[])

#cpp


Всем привет!

Недавно начал изучать C++, и не понимаю, зачем принимать 2 аргумента? Один — целое
число, а второй — массив, ещё и память выделяется как-то странно без new. Откуда приходят
эти аргументы, и зачем их используют?
    


Ответы

Ответ 1



Это параметры командной строки, которые могут быть переданы Вашему приложению. Первый аргумент передается по той причине, что встроенные массивы в С/С++ не хранят размер и передача размера - один из способов об этом узнать (можно к примеру договориться, что последний элемент будет нулевым, но это накладывает определенные ограничения). память выделяется как-то странно без new память выделяется в другом месте, а в функцию приходит только указатель. Как именно она там выделяется - в данный момент Вас тревожить не должно. Главное помнить правило - "кто память выделяет, тот обычно ее и удаляет". В данном случае компилятор вставит весь необходимый код, который выделит память и освободит. Хотя там ещё и система немного может выделить. Как же приходят аргументы? К примеру, Вы можете запустить программу так myprog param1 param2 param3 в этом случае argc будет иметь значение 4. argv[1] будет равно param1. argv[3] будет равно param3. Возникает вопрос, а что в нулевом элементе? а там имя программы в том виде, в котором его предоставляет операционная система. То есть, там может быть как myprog, так и имя с полным путем. Дополнительный материал: Аргументы функции main(): argv и argc Параметры функции main (argc, argv) upd: для любителей стандарта - читать пункт 3.6.1. Там в частности сказано, что официально есть два варианта - int main() и int main(int argc, char *argv[]) (хотя последний можно записать как int main(int argc, char **argv) - суть не меняется). Все остальное - на усмотрение компиляторов.

Ответ 2



При запуске программы можно указать доп. аргументы в командной строке. Первый параметр, argc (argument count) указывает на количество этих аргументов, а второй параметр, argv (argument values) содержит значения этих аргументов переданные при запуске.

Ответ 3



Это аргументы командной строки. argc — количество, argv — сам массив аргументов. Можете их вывести на экран и посмотреть, что получится. Нулевым всегда идет название программы, потом — что угодно. Используется, к примеру, так: Вы пишете что-то для работы с файлами. При запуске программы вы естественно просите пользователя указать путь к файлу, с которым надо работать. Но ведь гораздо удобнее запускать программу из терминала с уже указанным параметром: Admin:~ prog ~/Documents/file1.txt — в этом случае терминал сам может дописать название файла или еще чего удобного сделать. А в винде можно еще файл на программу перетаскивать (вот тут я не помню точно, как название файла передается). Опять-таки это только пример — ограничивает вас только ваше воображение. UPD: пока писал уже ответили))

Комментариев нет:

Отправить комментарий