我想做一个使用指针参数并返回其中一个指针的函数,是否可能?
示例:
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+'
如何仅使用指针而不是引用?
答案 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 *x
和int *y
POINTS AT的值,并将其存储在total
指向的位置:
*total = *x + *y;