Тип возвращаемого значения и параметры функции main
Функция main может иметь тип возвращаемого значения int (задает код возврата программы операционной системе, он может использоваться в пакетных командных файлах или при запуске процесса из другого процесса). В предыдущих примерах функция main не имела параметров или эти параметры не использовались, но эта функция, кроме случая, когда список ее параметров пустой, может иметь три параметра или два параметра, третий может отсутствовать, например,
void main(int argc, char *argv[], char *envp[])
{ …. }
Первые два параметра передают аргументы через командную строку (количество аргументов и массив строк).
Третий параметр envp – задает контекст (среду выполнения), т.е. задает значения переменных среды окружения, переменные находятся в массиве строк, каждая переменная среды окружения это отдельная строка.
Ниже в примере выводятся на печать параметры командной строки (в любом случае существует хотя бы один параметр – это имя исполняемого файла) и возможные переменные среды окружения при запуске программы на некотором компьютере под управлением ОС Windows 7 (в разных средах они могут быть разными), результаты вывода представлены на рисунке 5.
#include <stdio.h>
#include <locale.h>
void main(int argc, char *argv[], char *envp[])
{
int i;
setlocale(LC_ALL, "rus"); // Возможность вывода русских символов в кодировке
// Windows-1251 на консоль
printf("argc=%d", argc); // Печатаем число параметров командной строки
// Печатаем параметры командной строки
for (i = 0; i<argc; i++) printf("\n%s", argv[i]);
// Печатаем переменные среды окружения
for (i = 0; envp[i]; i++) printf("\n%s", envp[i]);
}
Рисунок 5 – Пример вывода параметров командной строки и переменных среды окружения