【c语言第一剑 为什么m=20,打印出来的结果却是10呢(局部变量和全局变量)】

c语言第一剑 为什么m=20,打印出来的结果却是10呢(局部变量和全局变量)**

#局部变量
【c语言第一剑 为什么m=20,打印出来的结果却是10呢(局部变量和全局变量)】_第1张图片
这是一个变量m,当他运行的时候会打印出 10
【c语言第一剑 为什么m=20,打印出来的结果却是10呢(局部变量和全局变量)】_第2张图片
**

我在主函数外新添一个m=20.会打印出不同的结果吗
结果是不会
当我在main函数外定义m=20时,打印出来的却还是10。
【c语言第一剑 为什么m=20,打印出来的结果却是10呢(局部变量和全局变量)】_第3张图片

这是为什么呢

我们先引出一个定义

局部变量

局部变量所在的局部范围
(局部变量的生命周期从进入作用域开始,出作用域结束)

全局变量

全局变量
在所有函数外部定义的变量称为全局变量
它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。

在了解了局部变量和全局变量的定义后,我们来看看这些定义到底是什么意思。

【c语言第一剑 为什么m=20,打印出来的结果却是10呢(局部变量和全局变量)】_第4张图片
【c语言第一剑 为什么m=20,打印出来的结果却是10呢(局部变量和全局变量)】_第5张图片
那么为什么同时10和20同是m的值,打印出来的却是10呢

当全局变量和局部变量同名时,在局部范围内全局变量被“屏蔽”,不再起作用。或者说,变量的使用遵循就近原则,如果在当前作用域中存在同名变量,就不会向更大的作用域中去寻找变量。简单的来说,当全局变量和局部变量同名时,局部变量的优先度高于全局变量,这就解释了为什么会打印10。

所以我们要经量避免局部变量和全局变量名相同。

以上就是我对局部变量和全局变量的初步了解,如有不足,还请各位大佬批评指正,作为一个初学c语言的学徒,我会秉持着谦虚好学的态度,谢谢所有为我批评指正的大佬,并一一感谢。(图片水印不一样是不小心重新注册了一个,发布时才看见 哭了哈哈哈)

你可能感兴趣的:(自我讲解,c语言,学习方法)