什么是&变量? - >双&安培;

时间:2011-09-12 13:44:33

标签: c++ vb.net variables

所以我有一个用c ++编写的类,需要将它转换为vb.net但是我在转换函数的某个部分时遇到了问题。

void deg_min_sec2decimal(double deg, double min, double sec, double& dec_deg)
{
    dec_deg = (deg+min/60.0+sec/3600.0);
}

什么类型的变量是“double&”,我知道双重但是“&”是什么? 它不是“double& dec_deg”所以它不是adres(指针等)?

以及如何将其转换为vb.net?

Grtz

5 个答案:

答案 0 :(得分:7)

这是一个参考。这意味着无论您将值设置为函数内部,从外部传入的原始变量都将具有该值。

您可以使用ByRef 将此转换为VB,使该函数返回该表达式的结果而不是取double&,并设置您将拥有的变量传入函数的结果。

所以,如果你之前有这个:

double retval;
deg_min_sec2decimal(something, something2, something3, retval);

您将其更改为

Dim retval = deg_min_sec2decimal(something, something2, something3)

(我不知道VB,因此语法可能有误,但你明白了。)

我会选择后者,因为通过参数返回的东西通常只在需要多个返回值时使用,而且该函数甚至没有返回任何内容。

答案 1 :(得分:5)

双&安培;只是通过引用传递的双倍。在VB.NET中,它将被声明为ByRef dec_deg as Double

编辑:但是,我建议不要使用void函数来通过引用设置值,只需将返回类型更改为double并返回表达式,而不是必须传递变量参考

答案 2 :(得分:3)

double&是对double的引用。这意味着在这种情况下函数可以更改传递参数的值。

在VB中,您可以通过ByRef参数执行此操作:
Sub deg_min_sec2decimal(deg as Double, min as Double, sec as Double, ByRef dec_deg as Double)

答案 3 :(得分:3)

是的,它是一个地址(“引用”是正确的C ++术语)。如果'&'并不重要在左边或右边,C ++不关心空格。

double& d; // Same as...
double &d;

答案 4 :(得分:2)

是的,这是一个地址,但术语是一个参考。这意味着,您对参数执行的操作将影响传递给它的变量。在VB中,等效的是ByRef字:

sub someFunc(ByRef someVar as double)