C++ 使用引用更改变量的地址

C++ 使用引用更改变量的地址,c++,C++,在下面的代码中,虽然我们更改了地址,但为什么它显示为2,3。为什么不是3,2 #include <iostream> using namespace std; void Addresschange(int *a, int *b) { int *t; t = a; a = b; b = t; cout << *a<<endl<< *b<<endl;//here its displaying 3,2 } int main ()

在下面的代码中,虽然我们更改了地址,但为什么它显示为2,3。为什么不是3,2

#include <iostream>
using namespace std;

void Addresschange(int *a, int *b)
{
 int *t;
 t = a;
 a = b;
 b = t;
cout << *a<<endl<< *b<<endl;//here its displaying 3,2
}

int main ()
{
  int a = 2 ,b = 3;
  Addresschange(&a ,&b);
  cout << a<<endl<< b;//why its displaying 2,3 here
  return 0;
}
#包括
使用名称空间std;
无效地址更改(int*a,int*b)
{
int*t;
t=a;
a=b;
b=t;

cout在
Addresschange
函数中,
a
b
是局部变量。当您更改它们的值时,这只会更改它们在函数中的值。因此,您的代码只需在
Addresschange
函数中交换
a
b
的值。它不使用任何指针操作o即使值恰好是指针,但这不会改变它们是通过值传递的事实,这意味着更改值不会传播到函数之外

如果要使用指针更改某个对象的值,则必须向该对象传递指针并更改指针所指向的值。因此,如果要更改
int*
的值,则需要向函数传递
int**

您的函数传递一个
int*
(指向int的指针),这允许您更改
int
的值。例如,
*a=3;
将使调用方中的
a
等于3,而不是2,使用通过值传递的指针来更改它指向的对象的值


(也可以在C++中使用引用)。除非使用类似的东西,否则仍然不能“引用”引用以使其引用其他的东西。

您不能更改
a
b
的地址。1.您没有调用
Addresschange
,2.要更改指针的值,您需要通过引用传递它,3.您不能更改变量的地址。@moffeltje,请查看我的更新版本code@TartanLlama很抱歉给您带来不便,现在我们可以为您更新代码了“//这里显示的是3,2”-wat?不,你一定是在开玩笑。。。。