Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Изменение значений параметров



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

Рис. 1. C++ размещает копии значений параметров во временном участке

памяти, называемом стеком

В случае необходимости функцию можно использовать для изменения передаваемых ей аргументов. В этом случае в качестве аргумента необходимо в вызываемую функцию передавать не значение переменной, а ее адрес. А для обращения к значению аргумента-оригинала использовать операцию «*».

Рис. 2. Передача параметров по адресу.

Пример функции, в которой меняются местами значения аргументов x и y:

void zam (int *x, int * y)

{

int t;

t = *x;

*x = y; *y = t;

}

Участок программы с обращением к данной функции:

void zam (int*, int*);

void main (void)

{

int a=2, b=3; …

cout<<" a = "<< a << " b = "<< b;

zam (&a, &b);

cout<<" a = "<< a << " b = "<< b;

}

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

a = 2, b=3

a = 3, b=2





Дата публикования: 2014-11-28; Прочитано: 179 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...