我想做一个使用指针作为参数并返回其中一个指针的函数,这可能吗?
例子:
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+'
我怎样才能只使用指针而不是引用来做到这一点?
我想做一个使用指针作为参数并返回其中一个指针的函数,这可能吗?
例子:
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+'
我怎样才能只使用指针而不是引用来做到这一点?
您需要取消引用指针以返回对它们指向的对象的引用:
*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;
}
假设这有效(它没有编译,正确的):
total=x+y;
它会给你指向地址的指针x
+ 的地址y
。由于这 [几乎] 总是胡说八道,编译器不允许您将两个指针相加。
您真正想要的是添加int *x
和int *y
POINTS AT 的值,并将其存储在total
指向的位置:
*total = *x + *y;