我有以下代码:
#include <stdio.h>
int foo2(int *px, int *py)
{
int sum = *px + *py;
*px = *px + 1;
*py = *py - 1;
printf("foo2 : res=%d x=%d y=%d\n", sum, *px, *py);
return sum;
}
int main() {
int x = 4, y = 7, res;
res = foo2(&(x++), &(y--));
printf("%d", res);
return 0;
}我需要增量x,递减y,然后在foo函数中将它们作为参数传递。
我有error: lvalue required as unary ‘&’ operand。另外,我尝试使用x + 1和y - 1,而不是x++和y++。
如何增加x和y值,并在foo2函数调用中传递指向它们的指针?有可能吗?
发布于 2020-07-18 15:38:49
我只想在这里补充几点:
C
在c#中,前缀和后缀增量都返回rvalue。所以,这就是当您尝试在c中获取post/预增量的地址时会出现错误的原因。
C++
但是在c++中,prefix (++x)返回lvalue,postfix(x++)返回rvalue。因此,在c++中,&(++x)是正确的,而&(x++)则抛出错误。
注:
我鼓励你多读一些这方面的内容。它将帮助你更好地理解。
https://stackoverflow.com/questions/62970173
复制相似问题