指针与回归

时间:2013-08-23 21:04:44

标签: c++ function pointers return

通过方法分配变量,返回变量或指向变量时哪个更快?

案例1

功能声明

void foo(int* number)
{
    *number = 5;
}

用法

int main()
{
    int number;
    function(&number);
    cout << "Number: " << number;
}

案例2

功能声明

int foo()
{
    int number = 5;
    return number;
}

用法

int main()
{
    int number;
    number = function();
    cout << "Number: " << number;
}

PS:在案例2中,我创建了一个变量并立即返回。我知道这没有意义,但这是我能找到的最接近我正在处理的情况的例子,因为我正在初始化一个实际的对象,这需要先创建对象,编辑它,然后返回它< / em>的

3 个答案:

答案 0 :(得分:2)

这取决于复制变量的成本。对于基本类型,返回一个值。 对于更复杂的类型,请考虑传入引用,或者查看C ++ 11移动语义。

答案 1 :(得分:1)

使用输出参数(案例1)的一个好处是它使您能够使函数“返回”多个值:

void foo (int* x, int* y)
{
    *x = 5;
    *y = 4;
}

但是就像所有人在评论中所说的那样,这在C ++和C一样重要。 通常,返回更具可读性,并且可以很好地定义程序的逻辑 容易遵循。在C ++中,坚持返回或引用。

答案 2 :(得分:0)

通常,您应该根据自己的需求选择使用哪种功能,而不是选择性能。

你有多个输出? - &GT;使用指针

输入是输出 - &gt;不妨使用指针

这两种情况更难以返回变量。 除此之外,在性能方面,当变量超级复杂时使用变量是很好的,这样,你只需要传入一个指针而不是那个超级复杂的对象。但除此之外,任何性能提升都可以忽略不计。