C语言变量根据作用域可分为全局变量和局部变量
全局变量:{ }外部定义的,生命周期为程序的生命周期,存放在静态数据区
局部变量:{ }内部定义的,生命周期为所在函数的生命周期,只在该函数内有效,存放在栈里
当全局变量名和局部变量名冲突时,局部变量优先,如:
1. #define _CRT_SECURE_NO_WARNINGS 1 2. #include<stdio.h> 3. 4. int g_val = 20; 5. 6. int main() 7. { 8. printf("1:g_val = %d\n", g_val); 9. 10. { 11. int g_val = 10; 12. printf("2:g_val = %d\n", g_val); 13. 14. } 15. 16. return 0; 17. }
运行代码,结果为:
可以看到,当全局变量和局部变量同名时,调用该变量时,变量值为局部变量的值,因此,不建议全局变量和局部变量名一样。