void update(int *a,int *b) {
*a=*a+*b;
*b=*a-*b;
}
int main() {
int a, b;
int *pa = &a, *pb = &b;
scanf("%d %d", &a, &b);
update(pa, pb);
printf("%d\n%d", a, b);
return 0;
}
我想将 a 和 b 的总和存储在 a 和 diff 中。 b 中的 a 和 b 使用指向 a 和 b 的指针,所以我按照给定的方式进行了尝试,加法部分工作正常但我不知道为什么减法不起作用??
完成后
*a=*a+*b;
*a
的值改变了,所以*b=*a-*b;
将使用那个新值。
您可以通过保存第一次计算的结果并稍后将其分配给
*a
来解决它:
void update(int *a,int *b) {
int tmp = *a + *b; // save for later
*b = *a - *b;
*a = tmp; // use here
}