暂时看到了三种,记录一下。
创建传递值的副本,传递过程是单向的,无法在函数中修改被传递的实参。
#include <iostream>
using std::cout;
using std::endl;int inc5 (int num);
int main()
{
int num = 5;
int b = inc5 (num);
cout << b << endl << num;
}int inc5 (int num)
{
num += 5;
return num;
}输出:10
5
传递参数指针的副本,该副本亦指向参数,通过指针参数可以实现对实参的修改。
#include <iostream>
using std::cout;
using std::endl;int inc5 (int* num);
int main()
{
int num = 5;
int* pnum = #
int b = inc5 (pnum);
cout << b << endl << num;
}int inc5 (int* num)
{
*num += 5;
return *num;
}输出结果:10
10
首先理解引用的含义,引用既不是参数值的拷贝(副本),也不是指向该参数的指针,它只是该参数的别名,可以实现与指针相同的效果,不过无需重新分配地址空间。
#include <iostream>
using std::cout;
using std::endl;int inc5 (int& num);
int main()
{
int num = 5;
int b = inc5 (num);
cout << b << endl << num;
}int inc5 (int& num)
{
num += 5;
return num;
}输出结果:10
10