首先,你得懂得引用的概念。我用代码来简易地说明一下:
int i=0,a=1;
int &r=a; // 这一步的意思为r绑定了a;
cout<<r<< endl; //此时r值为1
r=4;
cout<<r<<" "<<a<<endl; //这时候r和a的值都变为4
在调用的函数中,如果没有使用传引用参数,调用时会为形参和实参分别申请一个内存地址,形参和实参在内存中都有自己的内存地址,所以形参值的改变不会影响到实参;使用了引用形参就会把形参直接传入实参的内存地址,实现同步的改变。例如下边两个例子:
# include <iostream>
using namespace std;
int set(int i) //未传引用的参数
{
int b=4;
i=b;
return i;
}
int main()
{
int i=1;
cout<<set(i)<< endl; //其结果最终i的值还是1,没有变化
return 0;
}
# include <iostream>
using namespace std;
int set(int &i) //使用传引用的参数
{
int b=4;
i=b;
return i;
}
int main()
{
int i=1;
cout<<set(i)<< endl; //此时显示的值为4
return 0;
}
以上是关于传引用参数的解释,
下边是另一个例子:
# include <iostream>
using namespace std;
int count(char m[], int size, int &count_b)
{
int i, count_a = 0;
count_b = 0;
for (i = 0; i < size; i++) {
if (m[i] == 'a') {
count_a++;
}
else {
count_b++;
}
}
return count_a;
}
int main()
{
int count_b;
char m[5] = { 'a','b','b','a','a' };
cout << count(m, 5,count_b) << endl; //这里输出为a的个数:3
cout << count_b << endl; //这里输出位b的个数:2
system("pause");
return 0;
}