首页 > 解决方案 > 在 C++ 函数中通过引用传递

问题描述

我正在编写一个简单的程序来使用函数计算 6^5。这是我的代码

#include <iostream>
using namespace std;

int raiseToPower(int &base, int exponent){
 for (int i = 1; i < exponent; i = i + 1){
   base= base * base;
   }
 return base;
}

int main() {
 int base = 6;
 cout << "6^5 is " << raiseToPower(base, 5)<< endl;

 return 0;
}

结果是

 6^5 is -683606016

而不是 7776

你们能解释一下为什么我得到这个结果吗?我不是在寻找另一种编写此代码的方法。我知道有更简单的方法,但我试图了解出了什么问题

标签: c++functionloopsfor-loopdefinition

解决方案


你为什么使用通过引用传递。尽可能多地设置const可以减少犯错的几率:

#include <iostream>
using namespace std;

int raiseToPower(const int base, const int exponent) {
    int result = base;
    for (int i = 1; i < exponent; i = i + 1){
        result = result * base;
    }
    return result;
}

int main() {
    int base = 6;
    cout << "6^5 is " << raiseToPower(base, 5)<< endl;

    return 0;
}

如果它必须通过引用传递,您可以这样做:

#include <iostream>
using namespace std;

void raiseToPower(const int base,
                 const int exponent,
                 int &result)
{
    result = base;
    for (int i = 1; i < exponent; i = i + 1){
        result = result * base;
    }
}

int main() {
    int base = 6;
    int result;
    raiseToPower(base, 5, result);

    cout << "6^5 is " << result << endl;

    return 0;
}

推荐阅读