分享
三行代码  ›  专栏  ›  技术社区  ›  Mitchell Kelly

为什么这个函数不给一个名为number的整数加一?

  •  -1
  • Mitchell Kelly  · 技术社区  · 1 周前

    为什么这个代码不加一个整数?

    数字的值在控制台中显示时似乎不受影响。

    #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++;
        
        }
    
    2 回复  |  直到 1 周前
        1
  •  2
  •   MikeCAT    1 周前

    函数参数是 复制 默认情况下,修改副本(在本例中 a )不会影响原稿(在这种情况下 number

    要让函数修改调用方的变量,应该使用引用。

    还要注意 int addOne(number); 在你的 main addOne 初始化为 .

    #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++;
    
    }
    
        2
  •  1
  •   Ziad Adeela    1 周前

        3
  •  1
  •   quetzalcoatl    1 周前

    还有一种可能,你的函数已经返回值了。
    为什么不使用它?

    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