簡體   English   中英

為什么這個 function 不給 int 被叫號碼加一?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM