最近编程遇到了这么一个有趣的问题,乘机会了解一下这三者的区别,见下代码
int f(int a)
{
cout<<a<<endl;
}
int main()
{
int a=2;
f(a+1);
cout<<a;
}
输出的结果为3,2
从结果情况分析,函数将实参a=2先拷贝到形参的内存,然后形参+1,a本身的值没有影响
int f(int a)
{
cout<<a<<endl;
}
int main()
{
int a=2;
f(a++);
cout<<a;
}
输出的结果是2,3,函数将实参a=2先拷贝给形参,a本身本身再加1,形参的值没有变化
int f(int a)
{
cout<<a<<endl;
}
int main()
{
int a=2;
f(++a);
cout<<a;
}
输出的结果是3,3,函数将实参a+1,再将实参a=3拷贝给形参,故形参和实参都发生变化