首先要明确&的作用。
如果是函数中的参数的话,这涉及到按值传递和按地址传递。
举个例子,我们编写一个交换a与b位置的过程函数swap;
我们可以这么声明:void swap(int a,int b);
我们还可以这么声明void swap(int &a,int &b);
这连个函数有什么区别呢。首先看第一个声明;
(1)void swap(int a,int b);
这个声明是按值传递,在调用这个函数的时候,先把a和b的值复制到2个变量中ta和tb,然后再执行过程。过程结束后ta,和tb的值互相交换,然后,函数执行完成后,ta和tb的空间就会被释放。最后a和b的值不会改变;
(2)void swap(int &a,int &b)
这个声明是按地址传递,在调用这个函数的时候,直接读取a和b的地址,函数执行完成后,这2个地址中的数据发生交换,函数结束后这种变化不会消失。最后a和b的值相互转换。
温馨提示:答案为网友推荐,仅供参考