如何操作指针变量的值?

问题描述 投票:0回答:1
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 的指针,所以我按照给定的方式进行了尝试,加法部分工作正常但我不知道为什么减法不起作用??

c pointers
1个回答
0
投票

完成后

*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
}
© www.soinside.com 2019 - 2024. All rights reserved.