【发布时间】:2018-07-13 21:38:28
【问题描述】:
我编写了一个非常基本的程序来尝试更好地理解指针,但我无法弄清楚它们。我继续收到错误 'void celsius(double *)': cannot convert argument 1 from 'double' to 'double *'
#include <iostream>
using namespace std;
void celsius(double*);
int main() {
double temp;
double value;
cout << "Enter temperature in C ";
cin >> value;
temp = celsius(value);
cout << temp << endl;
return 0;
}
void celsius(double *par) {
double tem;
tem = (1.8 * par + 32);
return tem;
}
在参考了几个资源后,我无法弄清楚为什么它会返回错误。我知道错误说这是因为它无法将双精度转换为双精度*,但我在网上看到的示例无法解释原因。
对代码或解释的任何帮助都很棒。谢谢。
【问题讨论】:
-
您必须将
value的地址传递给需要指针的函数。例如:temp = celsius(&value);注意:这将揭示其他问题。 -
只需将
void celsius(double*)更改为double celsius(double)。函数没有理由需要指针。 -
另外,听起来你可以使用good C++ book
-
void celsuis(...也应更改为double celsius(...,因为您要返回double -
我建议在指针之前探索 references。例如,声明
void celsius(double& variable)。通过引用传递时,函数知道参数存在。传递指针时,该点可能指向任何地方,不包括来自调用者的变量。使用引用更安全。
标签: c++ function pointers void