0

我想做一个使用指针作为参数并返回其中一个指针的函数,这可能吗?

例子:

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+'

我怎样才能只使用指针而不是引用来做到这一点?

4

2 回答 2

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;
}
于 2013-09-05T16:43:07.800 回答
1

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

 total=x+y;

它会给你指向地址的指针x+ 的地址y。由于这 [几乎] 总是胡说八道,编译器不允许您将两个指针相加。

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

*total = *x + *y; 
于 2013-09-05T16:38:34.303 回答