先看如下例子:
#include "stdafx.h"
void Function(int x)
{
printf("x = 0x%x\n",&x);
x += 100;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a = 100;
Function(a);
printf("a = %d\n",a);
printf("a = 0x%x\n",&a);
return 0;
}
可以看出,我们并没有得到我们想要的结果。
通过查看内存地址可以看出,并没有达到参数传递的效果,只是相当于重新声明了一个变量
所以改变的是x的值,而非a的值。
参数传递的两种方法:
1.指针传值
void Function(int *x)
{
*x += 100;
}
2.引用传值
void Function(int &x)
{
x += 100;
}