Вы делаете копии переданных указателей, они являются локальными для вашей функции.Любое изменение, которое вы вносите в них, не влияет на внешнюю сторону.Вы должны захватить указатели по ссылке &
.
void func(int*& x, int*& y){
// as before...
}
Теперь изменения внутри функции будут правильно отражаться за ее пределами.По проблеме остается, хотя.Вы передаете адрес локальных переменных и пытаетесь изменить их указатели - это не работает.Когда вы берете адрес переменной &x
, вы создаете новый временный указатель, который не может быть преобразован в ссылку на указатель.Сделайте это вместо этого:
int main(){
int x = 2, y = 4;
int *px = &x, *py = &y;
func(px, py);
printf("%d %d\n",*px,*py);
}
Редактировать : Если вместо этого вы хотите поменять / установить значения x
и y
, а не только некоторые указатели, делайте как другие ответысостояние.