АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Параметры функции

Читайте также:
  1. II. Основные задачи и функции Отдела по делам молодежи
  2. III. ФУНКЦИИ ДЕЙСТВУЮЩИХ ЛИЦ
  3. III. Функции семьи
  4. IV. Порядок и формы контроля за исполнением государственной функции
  5. Wait функции
  6. Абсолютные и относительные ссылки. Стандартные формулы и функции. Логические функции
  7. Акцентная структура слова в русском языке. Система акцентных противопоставлений. Функции словесного ударения.
  8. Акцентная структура слова в русском языке. Функции словесного ударения.
  9. Алгоритм нахождения глобального экстремума функции
  10. Анализ инвест. проектов. Параметры инвест. проектов. Оценка инвест. проектов
  11. Аппарат государства – это система государственных органов, обладающих государственной властью и осуществляющих функции государства.
  12. Аргументы функции main(): argv и argc

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

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

- по значению

- по адресу.

-

Синтаксис при вызове и передаче параметров по значению:

 

имя (факт_параметр1, факт_параметр2 …);

Синтаксис при определении и объявлении:

тип имя (тип форм_параметр1, тип форм_параметр2 …);

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

При передаче параметров по адресу используется 2 синтаксиса:

а) с помощью ссылки

при вызове:

имя (факт_параметр1, факт_параметр2 …);

 

при определении и объявлении:

тип имя (тип &форм_параметр1, тип &форм_параметр2…);

 

б) с помощью указателя

при вызове:

имя (&факт_параметр1, &факт_параметр2…);

при определении и объявлении:

тип имя (тип *форм_параметр1, тип *форм_параметр2…);

 

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

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

Способы передачи параметров в функцию могут комбинироваться.

 

#include <iostream.h>

#include <conio.h>

#define out cout << i <<" "<< j <<" "<< k <<"\n";

void f(int, int*, int&);

Int main()

{

int i = 1, j = 2, k= 3;

cout <<"i j k\n";

Out

f(i, &j, k);

Out

getche();

return 0;}

void f(int i, int* j, int& k)

{

i++; (*j)++; k++;

}

 

Первый параметр (i) передается по значению. Его изменение в функции не влияет на исходное значение. Второй параметр (j) передается по адресу с помощью указателя, при этом для передачи в функцию адреса фактического параметра используется операция взятия адреса, а для получения его значения в функции требуется операция разыменования. Третий параметр (k) передается по адресу с помощью ссылки.

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


1 | 2 | 3 | 4 | 5 | 6 | 7 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)