Include <iostream.h> int f(int a,int*b, int&c)
{
return(++a+++(*b)+c++);
}
int main()
{
int a(3), b(1),c(2);
int z=f(c,&b,a);
cout<<a<<b<<c<<z<<endl;
cin.get();
}


Include <iostream.h> int f(int a,int*b, int&c){ return(++a+++(*b)+c++);} int main(){ int a

lolabrikoslol lolabrikoslol    1   27.08.2020 20:03    1

Ответы
малинка20177 малинка20177  15.10.2020 16:22

Преобразуем выражение в (++a)+(++(*b))+(c++).

Сигнатура функции f(int a, int *b, int &c). Первая переменная приходит по значению, вторая - по указателю, третья - по ссылке. Это значит, что изменения переменных b и с в функции будут влиять на переданные переменные.

Итак, мы имеем переменные

a = 3; b = 1; c = 2;

Передаём переменные в функцию как f(c, &b, a). Здесь а и с меняются местами.

В функции получаем

a = 2; b = 1; c = 3;

++a - увеличивает переменную на 1 и возвращает 3. a = 3

++(*b) - увеличивает переменную на 1 и возвращает 2. b = 2

с++ - возвращает 3 и увеличивает переменную на 1. с = 4.  

Получаем return 3 + 2 + 3 (=8)

Переменные перед выходом

a = 3; b = 2; c = 4;

Выходим из функции. Не забываем про связь между переменными в вызове f(c, &b, a).

Значит после выхода переменные равны

a = 4; b = 2; c = 2 (передавалась по значению);

z = 8.

На выход будет подано 4228.

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика