Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кетков.doc
Скачиваний:
17
Добавлен:
27.09.2019
Размер:
2.22 Mб
Скачать

6.10. Обращения к функциям

Обращение к функциям, не возвращающим значение, выглядит следующим образом:

namef(a1,a2,...);

Здесь namef – имя вызываемой функции;

a1, a2, … – список фактических параметров

Если формальный параметр в заголовке функции объявлен как значение, то соответствующим ему фактическим параметром может быть выражением такого же типа. Если формальный параметр объявлен как указатель, то на месте соответствующего ему фактического параметра может находиться только адрес данного такого же типа. Исключение составляют формальные параметры, объявленные с помощью нетипизированного указателя void *, им могут соответствовать адреса переменных любого типа. Для одиночных (скалярных) переменных адрес формируется из имени переменной с предшествующим ему символом &. Для массивов адресом считается имя массива. Например:

char str[80];

int x;

........

scanf("%d %s",&x,str);

Однако если нам предстоит ввод в определенный элемент массива, то нужно указывать его адрес. Например, &str[5] или str+5:

scanf("%c",&str[5]);

scanf("%c",str+5);

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

void swap(int &a,int &b)

{ int tmp=a;

a=b; b=tmp;

}

..........

swap(x,y);

Для функций, возвращающих значение, возможны два варианта вызова. Основной вариант предусматривает использование вызываемой функции в качестве операнда соответствующего выражения:

y=a*fin1(x,-2)+b;

В этом случае сначала будет вычислено значение операнда fin1(x,-2), которое затем будет использовано при подсчете значения выражения.

Второй вариант заключается в игнорировании возвращаемого значения. Пример подобного рода – использование функции scanf. Вообще говоря, кроме своей основной миссии (ввод данных, поступающих с терминала), она возвращает количество полей ввода, обработанных без ошибок. Для организации тщательного контроля за вводимыми данными это значение может оказаться полезным. Однако в большинстве практических программ на языке C вы вряд-ли обнаружите обращение следующего вида:

k=scanf("%d %s",&x,str);

6.11. Комментарии в программах

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

В языках C, C++ предусматривается две разновидности комментариев – многострочные и однострочные.

Многострочные комментарии начинаются с пары символов "/*" и заканчиваются такой же парой, записанной в обратном порядке – "*/". Комментарий подобного рода вовсе не обязан содержать несколько строк. Он, в частности, может находиться в любом месте программной строки, например, для исключения из рассмотрения компилятора фрагмента формулы:

y=sin(/*x+*/0.25)*q;

Довольно часто в многострочный комментарий заключают фрагмент программы, который не должен компилироваться в текущем сеансе.

Однострочный комментарий начинается вслед за парой символов "//" и продолжается до конца программной строки. Обычно с его помощью записывается комментарий к текущей строке или исключается фрагмент текущей строки из области обслуживания компилятором.