指针引用
测试代码如下
#include<iostream>
#include<string>
#include<cstring>
#include<stdlib.h>
using namespace std;
void process(int* &a) {
cout<<"传进函数的a的地址: "<<&a<<endl;
cout<<"传进函数a指向的地址: "<<a<<endl;
int* b=new int[10];
cout<<"b的地址: "<<&b<<endl;
cout<<"b指向的地址: "<<b<<endl;
b[0]=3;
a=b;//将a指向的地址修改成b指向的地址,相当于深拷贝
cout<<"修改之后a的地址: "<<&a<<endl;
cout<<"修改之后a指向的地址: "<<a<<endl;
}
int main()
{
int* a;
cout<<"刚开始时a的地址: "<<&a<<endl;
cout<<"a指向的地址: "<<a<<endl;
process(a);
cout<<"函数运行之后a[0]的值: "<<a[0];
}
处理的时候可以把指针看出一种简单类型,int* a是一个int* 类型的参数,int* &a是将a的地址传给函数,因此对a指向的地址进行修改时,外部a的指向的地址也会变化,所以a的值会变化,在参数传递时,可以把int*盖住,就当作一种普通类型来传递,函数中具体使用时再具体看类型特点。
还是看图比较清晰