русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ФУНКЦИИ (дополнительные возможности)


Дата добавления: 2015-06-12; просмотров: 574; Нарушение авторских прав


 

§1. Функции с переменным количеством параметров.

 

В языке С++ допустимы функции, количество параметров у которых в заголовке функции точно не определено. Кроме этого, могут быть неизвестными и типы параметров. Количество и типы параметров становятся известными только в момент вызова функции, когда явно задан список фактических параметров.

Формат прототипа такой функции следующий:

тип имя_функции (список_явных_параметров, …);

Здесь тип — тип возвращаемого функцией значения, список_явных_параметров— список спецификаций отдельных параметров, количество и типы которых фиксированы и известны в момент компиляции. Их можно назвать обязательными. Многоточие извещает компилятор, что дальнейший контроль соответствия количества и типов параметров при обработке вызова функции проводить не нужно.

Один из двух механизмов определения количества и типов параметров предусматривает передачу в функцию значения реального количества фактических параметров. Это выполняется с помощью одного из явно задаваемых (обязательных) параметров. Рассмотрим это на следующем примере(++):

void fun(int,...);

void main()

{ int a1=10, a2=-20, a3=33, a4=-44;

fun(1,a1);

fun(2,a1,a2);

fun(4,a1,a2,a3,a4);

getch();

}

void fun(int k,...)

{ int *p=&k; cout<<"\n There are "<<k<<" arguments\n";

for (int i=1; i<=k; i++)

// или for (; k; k--)

cout<<*(++p)<<" ";

}

В функции fun первый и единственный обязательный параметр k определяет количество действительно используемых при вызове необязательных фактических параметров. Для доступа к списку параметров используется указатель p типа int *. Вначале ему присваивается адрес явно заданного параметра k, то есть он устанавливается на начало списка параметров в памяти. Затем в цикле указатель p перемещается по адресам следующих фактических параметров, соответствующих неявным формальным параметрам. С помощью операции разыменования *p выполняется выборка их значений, которые в данном примере используются для вывода.



Цикл для вывода нескольких значений можно организовать двумя способами. Первый, тривиальный, использует счётчик i. Во втором, более оригинальном способе, параметром цикла является аргумент k, значение которого уменьшается на единицу после каждой итерации. Когда его значение станет нулевым, осуществляется выход из цикла.

Особенность и недостаток такой функции —возможность работы только с фактическими параметрами одного типа (в примере целочисленными), так как указатель p объявляется с одним конкретным типом (у нас int *).

 



<== предыдущая лекция | следующая лекция ==>
С. Задачи повышенной сложности. | Указатели на функции.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.277 сек.