Похоже, вы уже эмулируете проход по ссылке для целочисленных переменных, передавая их как указатели.
Я подозреваю, что вы действительно должны сделать это
*a = sum;
*b = diff;
Затем при вызове функции используйте оператор адреса &
для передачи указателей на обычные int
переменные:
int sum, diff;
update(&sum, &diff);
Если вы идете с передачей ссылок на указателии, например,
a = ∑
, тогда вы сделаете a
указанием на локальную переменную.Локальная переменная, которая (в некотором смысле) перестанет существовать, когда функция вернется.Это означает, что указатель будет недействительным, и разыменование приведет к неопределенному поведению .
И если вам не нужно поддерживать совместимость с C, то в C ++ используйте толькофактические ссылки вместо эмуляции через указатели:
void update(int& a,int& b) {
...
a = sum;
b = diff;
}
и назовите его как
int sum, diff;
update(sum, diff);