Добавил:
Лабы/курсовые по программированию (С++/Verilog HDL), Теория и Практика Помехоустойчивого Кодирования Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1сем Дагаев / lectures_3.pdf
Скачиваний:
29
Добавлен:
09.03.2022
Размер:
769.01 Кб
Скачать

области памяти. Для этого в ее определении следует использовать зарезервированное слово static. Примером переменной, которую следует объявлять внутри функции, является счетчик цикла.1

Укажем на одно полезное нововведение стандарта C99, которое касается объявления локальных переменных. Дело заключается в том, что этот стандарт разрешает объявлять переменные внутри инструкции for. Причем

область видимости этой переменной ограничивается телом цикла. Например:

/* Стандарт С89 */ int s =0, i;

for(i = 0; i < 10; i++) s += i * i;

printf(“i=%d”, i);

36.9.Понятие о прототипе. Компиляция

Понятие прототипа вначале появилось в языке C++. Затем оно было заимствовано языком Си, что нашло отражение в стандарте С89. Прототипом функции может служить ее заголовок, после которого поставлен символ точка с запятой. В прототипе необязательно указывать имена формальных параметров. Прототип для разработанной выше функции max2() может быть записан в одном из следующих видов:

double max2(double a, double b);

double max2(double, double);

Предпочтительнее указывать в прототипах имена параметров, наделяя их мнемоническим смыслом. Это повышает читабельность программы. Прототипы необходимы для корректной компиляции вызова функции. Следует отметить, что стандарт с89 не был последовательным в отношении использования прототипов. Он в отличие от языка С++ допускал компиляцию вызова функции при отсутствии прототипа. В этом случае компилятор создавал так называемое неявное объявление функции, которое

имеет следующий формат: int имя();

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

В стандарте С99 неявные объявления больше не поддерживает.

/* Стандарт С99 */ int s =0;

for(int i = 0; i < 10; i++) s += i * i;

/* printf(“i=%d”, i); на переменную i ссылаться нельзя она здесь невидна. */

1 Этот материал следует согласовать с материалом, изложенным в перой части по переменным

85

Соседние файлы в папке 1сем Дагаев