Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Определение функции (реализация).
Определение функции включает те же поля, что и прототип функции + тело функции – код, выполняющийся при вызове функции (заключён в {}). double summa (double a, double b) { double c; c=a+b; return c; } Вызов функции: для обеспечения эффективного и безопасного вызова функций требуется обеспечить: 1) связь по управлению; a) вызов и возврат; b) сохранение и восстановление контекста вызывающей части; 2) функция должна производить одни и те же действия с разными наборами данных.
Вызов inline функции.
Ключевое слово inline указывает компилятору, что он должен пытаться, каждый раз встречая вызов функции, вместо последовательности действий подставлять тело функции.
При этом: 1. исключаются накладные расходы на вызов функции; 2. сохраняется структурность текста программы. “-“ – увеличивает объем памяти
Inline функция не применима: 1. для функции, которая вызывается посредством указателя; 2. для функции с переменным числом параметров; 3. для рекурсивных функций. inline main() _ _cdecl, _fastcall, _stdcall - соглашение о вызове функции Соглашения включают понятия: 1. способ передачи параметров (порядок размещения параметров в стеке); 2. кто восстанавливает стек – вызывающая или вызываемая функция; 3. способ хранения имён функций в объектном модуле; Пример: пусть существует функция вида: void calltype f(char c, short s, int i);
возврат организован командой ret() сdecl - параметры формируются справа налево. _stdcall (в стиле Паскаль) – используется для уменьшения объёма исполняемого файла. _f@20 //количество байт, занимаемое параметром в стеке
Способы передачи параметров
по значению по адресу
по указателю по ссылке(C++) Передача параметров по значению – простая передача в стеке, не оставляющая возможности для изменения самих переменных, вызывающих функцию. Передача параметров по адресу – способ предполагает, что функция получает не копии объектов, а их адреса. При этом программист получает возможность изменить значение объекта по этому адресу. Вызовы подразделяются на вызовы по ссылке и по адресу. Если при передаче адреса требуется запретить функции модифицировать значения по этому адресу, используется ключевое слово const. main()
main()
int My (const char *p) main() } void f(int*) int f1(); }
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-12-15; просмотров: 46; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.198.49 (0.021 с.) |