函数调用时的实参和形参质检的数据是单向的什么传递

如题所述

第1个回答  2011-06-11
值传递吗? 就是能传进去,传不出来
举例

void test(int a)
{
a = 3;
}

调用
int a = 0;
test(a);
之后a还是0

为什么?
参数传递会创建副本(可能跟压栈有关系,压入栈的不是变量本身,而是副本
void test(int a)
{
int _a = a;
_a = 3;
}
这个告诉我们,副本_a被修改了,a没变

怎么才能修改实参

void test(int *a)
{
int *_a = a;
*_a = 3;
}

传地址进来, 副本的地址也是指向a的地址的,修改该地址内容,即修改了实参

传引用也可
void test(int &a)
{
a = 3;
}

这个就不会创建副本了
第2个回答  2011-06-11
单向值传递。本回答被提问者采纳
第3个回答  2011-06-16
单向值传递