#include<iostream>
using namespace std;
void f(int *a)
{
int d=10;
a=&d;
cout<<*a<<endl;
}
int main()
{
int a=5;
f(&a);
cout<<a<<endl;
return 0;
}
/*
输出
10
5
*/
对a取址,调用函数f的时候,新建了一个和&a一样的副本,这个副本和&a都指向a,但是后来又把副本赋值成了&d,这样第一个输出就是10,而外边的&a,并未改变,还是5。
#include<iostream>
using namespace std;
void f(int *a)
{
int d=10;
*a=d;
cout<<*a<<endl;
}
int main()
{
int a=5;
f(&a);
cout<<a<<endl;
return 0;
}
/*
输出
10
10
*/
对a取址,调用函数f的时候,新建了一个和&a一样的副本,这个副本和&a都指向a,后来又把副本指向的空间写入了d,这个副本这样第一个输出就是10,而外边的&a也指向这个空间,输出也是10。