- #include"iostream"
- using namespace std ;
- void fun(int *& P)
- {
- // 分配一个int内存大小地址给a1
- int *a1 = new int ;
- // 更改a1地址的值
- *a1=123;
- // 把a1地址的值给到P指向地址的值
- *P=*a1;
- // 修改p指向的地址为a1
- P=a1;
-
-
- }
- int main()
- {
- int a=10;
- // p指向a的地址
- int *p=&a;
-
- // p的地址
- cout<<p<<endl;
- // p指向地址的值
- cout<<*p<<endl;
- // 传入p的地址和引用。
- fun(p);
- // 输出p的地址
- cout<<p<<endl;
- // 输出p指向的值。
- cout<<*p<<endl;
-
-
- // 删除p指向的地址。
- delete p;
- return 0;
- }
总结:如果一个函数传入一个指针,又传入指针的引用(如:fun(int *&p),那么在函数中就会修改指针指向的地址。