指针通过参考供电

  • 本文关键字:参考 指针 c++
  • 更新时间 :
  • 英文 :


我需要创建一个void函数,该函数提供用户输入的强大结果。我一直在第15行收到一个错误,上面写着

在int 之前需要主表达式

有人知道为什么会发生这种情况吗?

#include <iostream>
using namespace std;
void powered(int* x, int y);
int main()
{
int *numPtr;
int power;
cout << "Enter an integer and its power: ";
cin >> *numPtr;
cin >> power;
powered(int *numPtr, &power);
cout << "Result is " << *numPtr << endl;
return 0;
}
void powered(int* x, int y)
{
for(int i = 1; i <= y; i++){
*x = *x * y;
}
}

这是样本输出:

Enter an integer and its power: 3 4
Result is 81

您的代码中有一个错误

int *numPtr;

这将创建一个未初始化的指针对象。它并没有指向实际的int。所以使用它是未定义的行为。不要在这里使用指针。

因为我们使用的是C++,而你的问题实际上是说";参考";在标题中,您应该使用";通过引用传递";为此。即

void powered(int& x, int y)
{
for(int i = 1; i <= y; ++i){
x *= y;
}
}

然后你就可以通过

int main()
{
int num;
int power;
std::cout << "Enter an integer and its power: ";
std::cin >> num;
std::cin >> power;
powered(num, power);
std::cout << "Result is " << num << 'n';

这是因为powered(int* x, int y)在第一个参数中需要一个指针,而在第二个参数中则需要int值。此外,计算功率的算法存在逻辑错误。我将把它留给你。您的函数调用应该是:

#include <iostream>
using namespace std;
void powered(int* x, int y);
int main()
{
int num;
int power;
cout << "Enter an integer and its power: ";
cin >> num;
cin >> power;
powered(&num, power);
cout << "Result is " << num << endl;
return 0;
}

注意,&运算符提取num的指针。取消引用运算符*对于您的主函数来说是不必要的。

最新更新