如何解决不确定为什么在我的void函数定义中未在此处调用返回类型
我正在学习C ++。我正在跟着学习教程。在创建了一个函数(如果我没有正确标记它的情况下,请原谅我)之后,该函数将使用for()循环来计算指数。我们正在学习如何使用void函数来调用它。在所有代码中,参数(希望正确标记)很少不包含返回类型。 这真是让我发痒,因为我真的很难理解到目前为止的一切。
#include <iostream>
double power_function(double base,double exponent)
{double solution = 1;
for(double i = 0; i < exponent; i++)
{solution = solution * base;
}
return solution;
}
void print_power(double base,double exponent)
{ double void_operation = power_function(base,exponent);
/* Why do we call without the return type? Cause it is already defined? */
std::cout << "The base of " << base << " with an exponent \n.";
std::cout << " of " << exponent << " is equal to " << void_operation;
}
int main ()
{int base test,exponent test;
std::cout << "What is the base,\n.";
std::cin >> base_test;
std::cout << "What is the exponent?\n.";
std::cin >> exponent_test;
printpower(base_test,exponent_test);
}
解决方法
在C ++中调用函数时,无需指定返回类型,因为上面的函数定义中已经指定了返回类型。
这是来自cplusplus.com的一个非常简单的示例
using namespace std;
int addition (int a,int b)
{
int r;
r=a+b;
return r;
}
int main ()
{
int z;
z = addition (5,3);
cout << "The result is " << z;
}
addition()
的返回类型为int,但调用时为
z = addition (5,3);
未指定返回类型。
首先,应声明一个函数:
double power_function(double base,double exponent)
这告诉编译器存在一个名为power_function
的函数,该函数接受两个double
参数,并返回一个double。 (定义可能会紧随其后,或者定义可能在其他位置,但这与他的情况无关)从那时起,编译器就知道参数类型和返回类型。
因此,当编译器看到以下内容时:
double void_operation = power_function(base,exponent);
编译器将生成代码,将这两个参数以双精度形式复制到堆栈中(如果需要,将其转换为double
),然后调用该函数。函数返回时,编译器已经知道返回类型为double
,因此它将栈顶项作为double
并将其分配给void_operation
(再次,从double
进行转换)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。