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