如何在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
更改变量?
有什么办法吗?虽然我知道它可以通过简单地传递引用来改变变量。
答案 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)
简单回答:你做不到。 为了实现你的目标,你必须通过指针传递。