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并不是函数test的参数呀
你理解错了。
“函数是通过值传递的,修改的是副本“
意思是,在test(b)这句函数调用时,b的值会被复制给函数内部的形参a,此时a是b的一个副本,修改a这个副本,是影响不了b的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。