русс | укр

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

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

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

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


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

Способы обмена данными между функциями.

Обмен данными между функциями происходит при вызове функции из какой-либо другой функции. При этом в языке существуют 2 способа передачи данных.

1. Передача по значению.

2. Передача данных по адресу.

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

1. Вычисляются выражения в списке фактических аргументов в соответствии с приоритетами операций, в результате получаются числовые значения фактических аргументов. Затем, если известен прототип функции, то тип полученного фактического аргумента сравнивается с типом соответствующего формального аргумента. Если они не совпадают, то либо производится преобразование типов, либо формируется сообщение об ошибке. Число выражений в списке фактических аргументов должно совпадать с числом формальных аргументов, если только функция не имеет переменного числа аргументов.

2. Происходит присваивание значений фактических аргументов соответствующим формальным аргументам.

3. Управление передается на первый оператор функции и выполняется тело функции.

4. Выполнение оператора return в теле функции возвращает управление и значение в вызывающую функцию. При отсутствии оператора return управление возвращается после выполнения последнего оператора тела функции, а возвращаемое значение не определено.

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

int (*fun)(int x, int *y);

Объявлена переменная fun как указатель (имя указателя fun) на функцию с двумя аргументами: типа int (аргумент х) и указателем на int (имя указателя) y. Сама функция должна возвращать значение типа int. Круглые скобки, содержащие имя указателя fun и признак указателя *, обязательны, иначе запись

int *fun (int x,int *y); будет интерпретироваться как объявление функции fun, возвращающей указатель на int.

Вызов функции возможен только после инициализации значения указателя fun и имеет вид: (*fun)(i,&j);

В этом выражении для получения адреса функции, на которую ссылается указатель fun используется операция разадресации * .

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

highlightSyntax('cpp_20395','cpp');

Просмотров: 984


Вернуться в оглавление



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


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

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

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


 


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

 
 

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