c++中的传引用参数

首先,你得懂得引用的概念。我用代码来简易地说明一下:

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;
}
发布了37 篇原创文章 · 获赞 12 · 访问量 9282

猜你喜欢

转载自blog.csdn.net/weixin_43265881/article/details/88392583