我需要创建一个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
的指针。取消引用运算符*
对于您的主函数来说是不必要的。