Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Osnovy_algoritmizatsii_i_programmirovania_-_Bat....doc
Скачиваний:
53
Добавлен:
25.12.2018
Размер:
3.21 Mб
Скачать

11.7. Параметры командной строки функции main

В стандарте ANSI функция main возвращает целочисленный результат, т.е. используется следующим образом:

int main () {

return 0;

}

здесь оператор return возвращает операционной системе код завершения функции, причем значение 0 трактуется как нормальное завершение, остальные значения воспринимаются как ошибки.

Функция main может быть определена с параметрами, которые передаются из внешнего окружения, например, из командной строки. Во внешнем окружении действуют свои правила представления данных, а точнее, все данные представляются в виде строк символов. Для передачи этих строк в функцию main используются два параметра, общепринятые (необязательные) идентификаторы которых argc и argv:

int main (int argc, char *argv[]) ...

Параметр argc имеет тип int, его значение формируется из анализа командной строки и равно количеству слов в командной строке, включая и имя вызываемой функции. Параметр argv – это массив указателей на строки, каждая из которых содержит одно слово из командной строки. Если слово должно содержать символ пробел, то при записи его в командную строку оно должно быть заключено в кавычки.

Функция main может иметь и третий параметр argp, который служит для передачи параметров операционной системы (ОС), в которой выполняется программа, в этом случае ее заголовок имеет вид

int main (int argc, char *argv[], char *argp[])

Операционная система поддерживает передачу значений для параметров argc, argv, argp, а пользователь отвечает за передачу и использование фактических аргументов функции main.

Приведем пример программы печати фактических аргументов, передаваемых из ОС в функцию main и параметров оперативной системы.

int main ( int argc, char *argv[], char *argp[])

{

int i;

printf ("\n Program Name %s", argv[0]);

for( i=1; i <=argc; i++)

printf ("\n Argument %d = %s", i, argv[i]);

printf ("\n OC parametrs: ");

while (*argp) {

printf ("\n %s", *argp);

argp++;

}

return 0;

}

Очевидно, что оформленная таким образом функция main() может вызываться рекурсивно из любой функции.

Глава 12. Классы памяти и область действия объектов

12.1. Классы памяти объектов в языке Cи

Напомним, что все объекты программы на Си перед их использованием должны быть декларированы. Операционные объекты (в частности переменные) при этом, кроме атрибута «тип», имеют необязательный атрибут «класс памяти», существенно влияющий на область и время их действия.

Класс памяти программного объекта определяет время ее существования (время жизни) и область видимости (действия) и может принимать одно из значений: auto, extern, static и register.

Класс памяти и область действия объектов по умолчанию зависят от места их размещения в коде программы.

Область действия объекта – это часть кода программы, в которой его можно использовать для доступа к связанному с ним участку памяти. В зависимости от области действия переменная может быть локальной (внутренней) или глобальной (внешней).

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

– внутри функции (блока);

– в заголовке функции при определении параметров;

– вне функции.

Эти переменные соответственно называются локальными (внутренними) переменными, формальными параметрами и глобальными (внешними) переменными.

Область действия локальных данных – от точки декларации до конца функции (блока), в которой произведена их декларация, включая все вложенные блоки.

Областью действия глобальных данных считается файл, в котором они определены, от точки описания до его окончания.

Если класс памяти у переменной не указан явным образом, он определяется компилятором исходя из контекста ее декларации.

Время жизни может быть постоянным – в течение выполнения программы, и временным – в течение выполнения функции (блока) программы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]