形参与实参的传递
这个程序里input()不是无返回的函数么,那形参应该不影响实参的,为什么结果是10,,10呢?
为什么这样改的话就又变成5,5了呢?实在搞不明白,虚心求解!
[解决办法]
形参影不影响实参,不是根据函数有没有返回值来判断的。根据具体的变量作用域来判断。
首先x和y是类point的成员,在类中相当于是全局变量。第一段代码中
void input(int a,int b)
{
x = a;
y = b;
}
出了这个大括号范围,因为x和y是在这组大括号之外定义的,所以出了这组大括号依然存在,在类中可以使用,所以输出10和10。
第二段代码中
void input(int x,int y)
{
x = x;
y = y;
}
从输出结果来看,说明类的成员变量x和y并没有被赋上值,因为局部变量有最高的优先级,这个函数的=左边的x不是类的成员变量的x,而是void input(int x,int y)里面的x,出了大括号之后失去生命周期。相当于{int x;x=x;}
不知道你明白没有?
[解决办法]
void input(int x,int y)
{
x = x;
y = y;
}