Функция main может иметь тип возвращаемого значения int (задает код возврата программы операционной системе, он может использоваться в пакетных командных файлах или при запуске процесса из другого процесса). В предыдущих примерах функция main не имела параметров, но эта функция может иметь три параметра или два параметра, третий может отсутствовать, например,
void main(int argc, char *argv[], char *envp[])
{ …. }
Первые два параметра передают аргументы через командную строку (количество аргументов и массив строк).
Третий параметр envp – задает контекст (среду выполнения), т.е. задает значения переменных среды окружения, переменные находятся в массиве строк, каждая переменная среды окружения это отдельная строка.
Ниже в примере выводятся на печать параметры командной строки (в любом случае существует хотя бы один параметр – это имя исполняемого файла) и возможные переменные среды окружения при запуске программы на некотором компьютере (в разных средах они могут быть разными). Также на рисунке ниже представлено окно с результатами работы программы.
#include <stdio.h>
void main(int argc, char *argv[], char *envp[])
{
int i;
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]);
}
Термины
Функция – это именованная совокупность объявлений и операторов, предназначенная для выполнения некоторой отдельной подзадачи.
Стек (англ. stack — стопка) — структура данных, в которой доступ к элементам организован по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»). В оперативной памяти выделяется специальный сегмент стека для временного хранения данных, который работает по такому же принципу.
Функции с переменным количеством параметров – функции, в которыхточное число параметров определяется только в момент вызова.
Рекурсивная функция – это функция, вызывающая саму себя.
Подставляемая функция – это функция, код которой создается в стольких экземплярах, сколько раз функция вызывается.
Указатель на функцию – это переменная, содержащая адрес размещения кода функции в оперативной памяти.
Перегрузка функций – это использование одного имени для разных функций.
Шаблон задает семейство функций, эти функции имеют одинаковое число параметров, но могут отличаться типы параметров и тип возвращаемого значения.
Лекция № 8. Ввод-вывод в Си