Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Объясните значение argc и argv - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ просто интересуюсь http://www.cyberforum.ru/cpp-beginners/thread451261.html
1. надо сделать чтобы полностью рандомные числа неповторялись... srand(time(NULL)) написал. 2. какую сортировку лучше всего использовать? Для будущих программ необходимо все методы знать, или 1...
C++ Как написать функцию c типом long double возвращаюшую тип shot? Мне бы какой нибудь тривиальный пример в Си. Спасибо:) http://www.cyberforum.ru/cpp-beginners/thread451244.html
Треугольники C++
Доброй ночи\утро\день всем! Сразу прошу прощения, если такая тема уже есть - но совесть моя почти чиста - искала - и не нашла ничего похожего) В общем, нужна ваша помощь в решении следующей задачи:...
Дано натуральное п (n 3). Получить vn. C++
Пусть u1=u2=0; v1=v2=1; ui=(ui-1 – ui-2vi-1 – vi-2)/(1+u2i-1+v2i-1); vi=(ui-1 – vi-1)/(ui-2+vi-1 +2), i=3, 4, … Дано натуральное п (n 3). Получить vn. Спасибо заранее.
C++ Программа с использованием объектов типа стека или очередь на C. http://www.cyberforum.ru/cpp-beginners/thread451219.html
Помогите пожалуйста с написанием. Программа с использованием объектов типа стека или очередь. На стандартный ввод программы поступают логические выражения из констант T(true) F(false), а также...
C++ Каррирование или карринг Определение с вики какое-то мутное, кто может объясните пожалуйста поподробнее - что это, для чего и когда применять. подробнее

Показать сообщение отдельно
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
23.02.2012, 03:04
Дело в том, что функция main перегружена. Проще- сществует как бы две ипостаси (объявления) main, вот они:
C++
1
2
int main ();
int main(int argc, char *argv[]);
Ты можешь пользоваться любой из них. Если ты пользуешься второй, то в параметре argc- количество принимаемых аргументов, а argv суть массив строк, каждый из которых и есть аргумент. Подробнее:

++++++++++++++++++++++++++++++++++++++++++++

То, о чём ты спрашиваешь, называется запуск из консоли.
Зайди в консоль, потом (будучи в консоли) зайди (умеешь?) в папку, где находится твоя программа
И вот там-то и напечатай: ComLine один два три<Enter>

Вот теперь подсчитаем, это будет 4 аргумента. И их все можно вывести в программе main. То есть argv[0] содержит адрес строки "ComLine", argv[1] содержит адрес строки "один", argv [2] содержит адрес строки "два" и argv[3] содержит адре строки "три"

И все эти строчки печатаются в коде
C++
1
2
3
for (int i=0; i<argc; i++) {
                cout << argv[i] << "\n";
  }
+++++++++++++++++++++++++++++++++++++++++++++++++

Из ньюансов:

1) argv[0] ВСЕГДА указывает на адрес строки, содержащей имя команды (ComLine в нашем случае). То есть аргументов (а по сути, только "один" "два" и "три" являются аргументами) может вообще не быть, то есть ты можешь запустить прогшрамму одной командой:
C++
1
ComLine
2) Отсюда второй вывод- argv всегда не меньше 1-ы! Ведь хотя бы одна строчка (имя команды) в массиве указателей должна присутствовать

3)А если ты тычешь ты ярлык мышью, то понятное дело, ты ТОЖЕ никаких аргументов не передаёшь, ни один ни два и не три. Но каким-то образом полный путь к твоей команде и интерпретируется как argv[0]. Механизм такой интерпретации мне неизвестен, да и не к чему он, просто запомни, если вызываешь программу не из консоли, то argv[0] указывает на полный путь к этой программе, а argc, соттветсвенно, равен 1.

Не по теме:

Чё я зря писал, что ли?

1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru