函数参数 - 按值传递
C++通常按值传递参数,这意味着将数值参数传递给函数,而函数将其赋给一个新的变量。
函数参数 - 按引用传递
引用被用作函数参数,使得函数中的变量名成为调用程序中的变量的别名。
这种传递参数的方法称为引用传递。按引用传递允许被调用的函数能够访问调用函数中的变量。
所以按值传递是创建了新的变量,而引用传递,并没有创建新的变量。
// Len_FuncParam.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
// 按值传递
void FuncA(int a)
{
printf("\n\n\t--------FuncA(按值传递)--------\n");
printf("\t%d, addr = 0x%x", a, &a);
// 改变入参的值
a = 200;
}
// 按引用传递
void FuncB(int& a)
{
printf("\n\n\t--------FuncB(按引用传递)--------\n");
printf("\t%d, addr = 0x%x", a, &a);
// 改变入参的值
a = 200;
}
int _tmain(int argc, _TCHAR* argv[])
{
int data = 100;
printf("\n\n\t--------Main--------\n");
printf("\t%d, addr = 0x%x", data, &data);
FuncA(data);
printf("\n\tresult: %d, addr = 0x%x", data, &data);
FuncB(data);
printf("\n\tresult: %d, addr = 0x%x", data, &data);
return 0;
}
执行结果:
注: 所以在使用中经常将引入传递的参数也可作为出参。
可以通过函数内部的逻辑来改变入参的值。