什么是传值,什么是传址?网上答案五花八门。今天做一下简单的实验。
1.传值:
int _tmain(int argc, _TCHAR* argv[])
{
int x = 2;
int y = 3;
swap1(x, y);
x;
y;
return 0;
}
void swap1(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
结果: 想, x, y 不能交换
2.引用:传址:a的地址跟x地址一样, x,y 交换成功。
int _tmain(int argc, _TCHAR* argv[])
{
int x = 2;
int y = 3;
swap2(x, y);
x;
y;
return 0;
}
void swap2(int &a, int & b)
{
int temp;
temp = a;
a = b;
b = temp;
}
结果:
3.指针传递:指针作为输入参数, 传递指针的值(指针指向的地址)
int _tmain(int argc, _TCHAR* argv[])
{
int x = 2;
int y = 3;
swap3(&x, &y);
x;
y;
return 0;
}
void swap3(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
结果: x的地址传递给了a, a 指向的内容是x. x, y 交换成功。