Параметры функции main (argc, argv)

При создании консольного приложения в языке программирования С++, автоматически создается строка очень похожая на эту:

int  main(int argc, char* argv[]) // параметры функции main()

Эта строка — заголовок главной функции main(), в скобочках объявлены параметры argс и argv. Так вот, если программу запускать через командную строку, то существует возможность передать какую-либо информацию этой программе, для этого и существуют параметры argc и argv[]. Параметр argc имеет тип данных int, и содержит количество параметров, передаваемых в функцию main. Причем argc всегда не меньше 1, даже когда мы не передаем никакой информации, так как первым параметром считается имя функции. Параметр argv[] это  массив указателей на строки. Через командную строку  можно передать только данные строкового типа. Указатели и строки — это две большие темы, под которые созданы отдельные разделы. Так вот именно через параметр argv[] и передается какая-либо информация. Разработаем программу, которую будем запускать через командную строку Windows, и передавать ей некоторую информацию.

// argc_argv.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
       if (argc > 1)// если передаем аргументы, то argc будет больше 1(в зависимости от кол-ва аргументов)
       {
             cout << argv[1]<<endl;// вывод второй строки из массива указателей на строки(нумерация в строках начинается с 0 )
       } else
               {
                 cout << "Not arguments" << endl;
               }
       system("pause");
       return 0;
}

// код Code::Blocks

// код Dev-C++

// argc_argv.cpp: определяет точку входа для консольного приложения.

#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
       if (argc > 1)// если передаем аргументы, то argc будет больше 1(в зависимости от кол-ва аргументов)
       {
             cout << argv[1]<<endl;// вывод второй строки из массива указателей на строки(нумерация в строках начинается с 0 )
       } else
               {
                 cout << "Not arguments" << endl;
               }
       return 0;
}


После того как отладили программу, открываем командную строку Windows и перетаскиваем в окно командной строки экзэшник нашей программы, в командной строке отобразится полный путь к программе(но можно прописать путь к программе в ручную), после этого можно нажимать ENTER и программа  запустится (см. Рисунок 1).

Аргументы функции main()

Рисунок 1 — Параметры функции main

Так как мы просто запустили программу и не передавали ей никаких аргументов, появилось сообщение Not arguments. На рисунке 2 изображён запуск этой же программы через командную строку, но уже с передачей ей аргумента Open.

Аргументы функции main()

Рисунок 2 — Параметры функции main

Аргументом является слово Open, как видно из рисунка, это слово появилось на экране. Передавать можно несколько параметров сразу, отделяя их между собой запятой. Если необходимо передать параметр состоящий из нескольких слов, то их необходимо взять в двойные кавычки, и тогда эти слова будут считаться как один параметр. Например, на рисунке изображен запуск программы, с передачей ей аргумента, состоящего из двух слов — It work.

Аргументы функции main()

Рисунок 3 — Параметры функции main

А если убрать кавычки. То увидим только слово It. Если не планируется передавать какую-либо информацию при запуске программы, то можно удалить аргументы в функции main(), также можно менять имена данных аргументов. Иногда встречается модификации параметров argc и argv[], но это все зависит от типа создаваемого приложения или от среды разработки.

Практика

К сожалению, для данной темы пока нет подходящих задач. Если у вас есть таковые на примете, отправте их по адресу: admin@cppstudio.com. Мы их опубликуем!

Автор: admin
Дата: 25.08.2012
Поделиться:

Комментарии

  1. Muthabor

    а как передавать параметры отличные от типа «char»?

  2. Богдан

    у MVC не скомпилировать а построить решение

  3. kybik

    ну так нажми скомпилировать, тогда будет  *.exe

  4. Крабь Апров

    у меня программа не сохраняется как *.exe, он мне разрешает много вариантов кроме этого, а сохранив под *.cpp он мне открывает сам mvs

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

Вы должны войти, чтобы оставить комментарий.