C语言中全局变量调用后会被修改值吗?

C语言中全局变量被函数调用有会被修改原来的值吗?我在KR的书中看到函数是通过值传递的,修改的是副本,return一个值,而不能直接修改变量的值,但是我写的这一小段程序为什么会被修改了。main函数调用max后副本修改成了3,但是在test函数中为什么max的值是3?而不是原来的2?图片描述

#include <stdio.h>

int max = 2;

int test(int a);

main()

{

int a, b;

a = 1;

b = 2;

extern int max;

max += a;

printf("%d\n", max);

printf("%d", test(b));

}

int test(int a)

{

int p;

extern max;

p = max + a;

return p;

}

回答:

“函数是通过值传递的,修改的是副本”是没错,你的全局变量max又没有传递。你想要的可能是这种:

#include <stdio.h>

int max = 2;

int test(int a);

main()

{

printf("%d", test(max));

printf("%d\n", max);

}

int test(int a)

{

a++;

return a;

}

回答:

你理解错了。
“函数是通过值传递的,修改的是副本“
意思是,在test(b)这句函数调用时,b的值会被复制给函数内部的形参a,此时a是b的一个副本,修改a这个副本,是影响不了b的。

以上是 C语言中全局变量调用后会被修改值吗? 的全部内容, 来源链接: utcz.com/p/195495.html

回到顶部