Студопедия

Главная страница Случайная страница

Разделы сайта

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






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






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

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

Пример

#include < iostream.h>

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

int main()

{

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

cout< < ”i j k\n”;

cout< < i< < ’ ‘< < j< < ’ ‘< < k< < ’\n’;

f(i, & j, k);

cout< < i< < ’ ‘< < j< < ’ ‘< < k< < ’\n’;

return 0;

}

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

{

i++;

(*j)++;

k++;

}

Результат работы программы:

i j k

1 2 3

1 3 4

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

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

Если требуется запретить изменение параметра внутри функции, используется модификатор const.

 

Передача массивов в качестве параметров

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

Пример

Необходимо найти сумму элементов массива. Нахождение суммы оформить в виде функции.

#include < iostream.h>

int sum(const int* mas, const int n);

int const n=10;

main()

{

int a[n]={3, 4, 5, 4, 4};

cout< < " Summa= " < < sum(a, n);

}

int sum(const int* mas, const int n)

{

//варианты: int sum(int mas[], int n)

// int sum(int mas[n], int n)

 

int s=0;

for (int i=0; i< n; i++)

s+=mas[i];

return s;

}

Пример

Необходимо найти сумму элементов матрицы. Нахождение суммы оформить в виде функции.

#include < iostream.h>

#include < conio.h>

int sum(const int** matr, const int n, const int m);

main()

{

clrscr();

const n=2, m=2;

int **a;

for (int i=0; i< n; i++)

for (int j=0; j< m; j++)

cin> > a[i][j];

 

cout< < " Summa= " < < sum(a, n, m);

}

 

int sum(const int** matr, const int n, const int m)

{

int s=0;

for (int i=0; i< n; i++)

for (int j=0; j< m; j++)

s+=matr[i][j];

return s;

}






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.