Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В языке С/С++ аргументы при стандартном вызове функции передаются по значению, т.е. в функцию передаются не оригиналы аргументов, а их копии. В стеке выделяется место для формальных параметров функции и в это выделенное место при ее вызове заносятся значения фактических аргументов. Затем функция использует и может изменять эти значения в стеке. Но при выходе из функции измененные значения теряются. Вызванная функция не может изменить значения переменных, указанных как фактические аргументы при обращении к данной функции.
Рис. 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!