3
我明白为什么这个工程,因为它确实C++按引用传递并按值传递副作用?
#include <iostream>
using namespace std;
int additionFive (int a)
{
a = a - 5;
return a;
}
int subtractFive (int &a)
{
a = a -5;
return a;
}
int main()
{
int local_A = 10;
cout << "Answer: " << additionFive(local_A) << endl;
cout << "local_A Value "<< local_A << endl;
cout << "Answer: " << subtractFive(local_A) << endl;
cout << "local_A = Value "<< local_A << endl;
return 0;
}
OUTPUT:
Answer: 5
local_A Value 10
Answer: 5
local_A = Value 5
但我不明白为什么语法的这种变化改变了答案(简单地把算术和打印在同一行)
#include <iostream>
using namespace std;
int additionFive (int a)
{
a = a - 5;
return a;
}
int subtractFive (int &a)
{
a = a -5;
return a;
}
int main()
{
int local_A = 10;
cout << "Answer: " << additionFive(local_A) << " local_A Value: "<< local_A << endl;
cout << "Answer: " << subtractFive(local_A) << " local_A = Value: "<< local_A << endl;
return 0;
}
OUTPUT:
Answer: 5 local_A Value: 10
Answer: 5 local_A = Value: 10
我该怎么办解决这个未定义的行为来纠正这个问题? – stackoverflow
@stackoverflow你不这样做。 :)你使用第一个版本(2个独立的'cout'语句),而不是第二个版本。 –
好吧,这个小程序的重点是做两个不同的功能;一个做参照,一个做价值传递。那么你如何正确地做那些事呢?我的目标是在发送第二个函数时更改局部变量。 – stackoverflow