引用和指针做形参时的区别

引用和指针做形参是很常见的问题,但是它们在做参数的时候是有区别的。先说一下指针吧,指针他是一个变量,有具体的值,他的值是一个地址(非const)。

而引用是对一个变量的引用,是变量的别名,并且在引用的时候必须要初始化。举个例子吧:  

int  a=2;    

int  &b=a;    // b是对a的引用,a、b是同一个内存单元,即a和b的值都是2,b就相当于是a的一个别名,改变b的值a也会发生改变,改变a的值b也会发生改变,例如

b=10;      当系统执行了这条语句后,a和b的值就都变成了10;

a=-5;       当系统执行了这条语句后,a和b的值就都变成-5。 因为a和b具有同一个内存空间,所以不管改变哪一个的值,另一个也会跟着发生改变,可以理解为一个

人他可以有两个名字,他既可以叫 张三,也能叫李四,但不管是哪个名字,其实说的是一个人。然后说一下引用和指针做形参时的具体用法吧,举下面这个例子:

void swap(int &pa,int *pb)

{

}

int main()

{

   int a,*b;

   swap(a,b)  

}

在主函数中调用swap()时,指针和引用做形参就是上面的形式。当用指针或者引用做形参来改变主函数中变量的值得时候,指针是值传递,传递的是指针变量b的值;而

引用是址传递,传递的是变量a的地址。另外还有一点要知道,指针做形参,传递指针的时候,会产生一个临时的指针变量,需要分配额外的内存空间;但是传引用的话

则不会,所以传引用效率更高,也比指针更安全。

猜你喜欢

转载自www.cnblogs.com/buanxu/p/12754037.html