无法将参数 '1' 的 'double' 转换为 'double*' 到 'void Swap(double*, double*)'
Posted
技术标签:
【中文标题】无法将参数 \'1\' 的 \'double\' 转换为 \'double*\' 到 \'void Swap(double*, double*)\'【英文标题】:Cannot convert 'double' to 'double*' for argument '1' to 'void Swap(double*, double*)'无法将参数 '1' 的 'double' 转换为 'double*' 到 'void Swap(double*, double*)' 【发布时间】:2014-12-08 03:45:45 【问题描述】:我正在尝试完成一个复习问题(为即将到来的编程决赛),但是,我无法解决这个问题,因为我不断收到错误(标题)。正如预期的那样,我将发布问题以及我尝试的解决方案。
问题:
您将获得以下函数定义: 无效交换(双 * n1,双 * n2) 对于交换两个数字的函数。实现此交换功能并 从 main 调用函数,传入两个数字。打印两者的值 main 中的数字以验证您的功能是否正常工作,并且 数字被交换了。
我的回答:
void Swap(double *n1, double *n2)
int temp;
temp = *n1;
cout<<temp<<endl;
*n1 = *n2;
*n2 = temp;
cout<<temp<<endl;
int main()
Swap(.99,2.1);
return 0;
当然,我们得到了一个解决方案页面,但是,这是没有给出解决方案的问题之一。我应该怎么做/如何解决这个问题?请彻底解释给出的任何解决方案!谢谢!
【问题讨论】:
您对Swap(.99,2.1)
的期望从现在开始交换 0.99 和 2.1 的值吗?
提示:double*
!= double
.
这两个变量应该只是交换 - *n1 变成 *n2 和 *n2 变成之前的 *n1
什么变量?你用两个常量调用函数;看不到变量。顺便说一句,在 Swap 函数中使用 integer 临时变量会导致 doubles 被破坏。
在 C++ 中传递引用的奇怪方式。
【参考方案1】:
函数参数double *n1
表示必须给函数一个double的地址。但是,您试图给它加倍。
要获取double的地址,你必须创建一个变量:
double d1 = .99;
double d2 = 2.1;
Swap( &d1, &d2 );
【讨论】:
简单,切中要害!谢谢!我正在阅读我的 C++ 手册,但无法连接这些点——指针可能会让人头疼。 您还需要将Swap
中的临时更改为double
而不是int
。
在你了解了这个函数是做什么的之后,你应该在以后的项目中使用using std::swap; swap(d1, d2);
。以上是关于无法将参数 '1' 的 'double' 转换为 'double*' 到 'void Swap(double*, double*)'的主要内容,如果未能解决你的问题,请参考以下文章
无法将“UnsafePointer<Double>”类型的值转换为预期的参数类型“UnsafePointer<_>”
为啥此代码显示“无法将 'double' 转换为 'double*'”错误?
从 double 到 const int 的 C++ 类型转换无法正常工作