[英]Why is this function not adding one to an int called number?
為什么這段代碼沒有在 int 數字上加一?
請原諒我發布了一個非常簡單的問題,我是 c++ 的新手。
出現在控制台中時,數字的值似乎不受影響。 我是否錯誤地傳遞了函數的參數?
#include <iostream>
int number = 0;
int addOne(int a);
int main()
{
std::cout << "Please type a number to add to one: ";
std::cin >> number;
std::cout << number << " plus one equals: ";
int addOne(number);
std::cout << number;
}
int addOne(int a) {
return a++;
}
Function arguments 默認是復制的,所以修改副本(本例a
)不會影響原件(本例number
)。
要讓函數修改調用者的變量,您應該使用引用。
還要注意int addOne(number);
在您的main
function 調用中不是 function 調用,而是變量addOne
的聲明,並將其初始化為number
。
#include <iostream>
int number = 0;
int addOne(int& a); // add "&"
int main()
{
std::cout << "Please type a number to add to one: ";
std::cin >> number;
std::cout << number << " plus one equals: ";
addOne(number); // remove "int"
std::cout << number;
}
int addOne(int& a) { // add "&"
return a++;
}
您按值傳遞變量,這意味着 function 中的值將是副本,原始值不會被修改。
另一種可能性是,您的 function 已經返回值。
為什么不使用它?
int addOne(int a) { // no &, still passed as copy
a++; // increase the copy
return a; // return value AFTER increase has been done on 'a'
}
number = 2;
number = addOne(number); // copy in (2), copy out (3)
std::cout << number; // now it's 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.