使用指针作为函数参数

时间:2013-09-05 16:33:59

标签: c++ pointers parameters

我想做一个使用指针参数并返回其中一个指针的函数,是否可能?

示例:

int* sum(int* x, int* y, int* total){
    total=x+y;
    return total;
}

我收到此错误:

main.cpp:10:13: error: invalid operands of types 'int*' and 'int*' to binary 'operator+'

如何仅使用指针而不是引用?

2 个答案:

答案 0 :(得分:3)

您需要取消引用指针以返回对它们指向的对象的引用:

*total = *x + *y;

但是,在C ++中,您可以使用引用来实现此目的:

int sum(int x, int y, int& total)
{
    total = x + y;
    return total;
}

引用仅用total声明,因为这是我们需要更改的唯一参数。这是一个如何调用它的例子:

int a = 5, b = 5;
int total;

sum(a, b, total);

现在我想到了,因为我们使用引用来改变值,所以确实没有必要返回。只需取出return语句并将返回类型更改为void

void sum(int x, int y, int& total)
{
    total = x + y;
}

或者您可以反过来并在不使用引用的情况下返回添加内容:

int sum(int x, int y)
{
    return x + y;
}

答案 1 :(得分:1)

假设这有效(它没有编译,这是正确的):

 total=x+y;

它会指向指向x地址+ y地址的指针。由于这几乎总是无意义,编译器不允许您将两个指针添加到一起。

您真正想要的是添加int *xint *y POINTS AT的值,并将其存储在total指向的位置:

*total = *x + *y;