如何在C中的函数内修改值而不是通过引用传递的变量?

时间:2017-09-18 12:51:46

标签: c

如何在C中的函数内修改由值而不是引用传递的变量?

void fun_a(int a, int b) {
  ....
}

int main() {
    int x = 5, y = 6;
    printf("%d, %d", x, y);    // 5, 6

    fun_a(x, y);               // pass by value

    printf("%d, %d", x, y);    // 1, 2

    return 0;
}

如何使用fun_a更改变量?

有什么办法吗?虽然我知道它可以通过简单地传递引用来改变变量。

2 个答案:

答案 0 :(得分:4)

C不知道参考。改为使用指针。

void fun_a(int *a, int *b) {
   *a = 10;
   *b = 12;
}

int main() {
    int x = 5, y = 6;
    printf("%d, %d\n", x, y);    // 5, 6
    fun_a(&x, &y);             // pass pointer to variable
    printf("%d, %d\n", x, y);    // 10, 12

    return 0;
}

答案 1 :(得分:2)

简单回答:你做不到。 为了实现你的目标,你必须通过指针传递。