2017-05-14 92 views
-2

x和y的最终值应该是x = 4和y = 21。我明白为什么y = 21,但是为什么x = 4?如果“a = 5”不将值更改为5?谢谢函数中变量的变化值C

int f(int a, int *b){ 
    a = 5; 
    *b = *b + 3*a; 
} 

int main(){ 
    int x, y; 
    x = 4; 
    y = 6; 
    f(x, &y); 
    // What are x and y now? 
} 
+4

C使用按值传递所有函数参数。在一个函数内改变一个变量不会改变传入的原始变量的值。 – kaylum

+0

@kaylum你介意对此进行详细说明吗? – Joe

+0

最好如果你咨询你的课本。任何基本的C语言书籍或教程都涵盖了C语言的基础知识。 – kaylum

回答

0

在你的函数中,按值传递而不是通过引用,所以x值将不会被改变。虽然b通过引用传递,所以y的值被改变。