Primeiro olhe para um exemplo
#include <iostream>
using namespace std;
int change(int r)
{
r++;
}
int main()
{
int x = 5;
change(x);
cout << "x = " << x << endl;
return 0;
}
Depois de passar x para a função de mudança e, em seguida, emitir o valor de x, ele não mudará, porque o x passado para a função de mudança é apenas equivalente a uma cópia do x original na função principal, e a saída final ainda é 5;
Se você realmente deseja alterar o valor de x, deve usar uma referência em C ++, ou seja, adicionar um "e" comercial antes do parâmetro formal passado na função de alteração:
#include <iostream>
using namespace std;
int change(int &r)
{
r++;
}
int main()
{
int x = 5;
change(x);
cout << "x = " << x << endl;
return 0;
}
Claro, se você usar a sintaxe C simples (c simples) para conseguir, você precisa usar ponteiros, você pode obter o mesmo efeito
#include <iostream>
using namespace std;
void change(int *r)
{
++(*r);
}
int main()
{
int x = 5;
int *p = &x;
printf("%d\n",x);
change(p);
printf("%d\n",x);
return 0;
}
Portanto, se você deseja definir uma variável de referência, como ela deve ser implementada?
código mostrado abaixo:
#include <iostream>
using namespace std;
int a = 5,b = 6;
int *p = &a;
int *q = &b;
void change(int *&r)
{
r = q;
}
int main()
{
cout << *p << endl;
change(p);
cout << *p << endl;
return 0;
}