「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战」
局部变量
-
局部变量
- 不同函数之间定义的变量无法相互访问(main函数与其他定义的函数之间或其他定义的函数相互之间)
-
同一个函数内定义相同名称的变量也不一定相互影响(如复合语句中和函数中均定义)
- 举例
- 结果
-
注意
- 复合语句:例如for语句中和函数内都定义了相同的变量,for语句中的变量会屏蔽函数内的变量。这样就允许变量的使用的时候定义更为方便。
- 如果相同的域内同时定义多个相同名称的变量则编译器会报错
- 举例
全局变量
-
全局变量
- 在函数里边定义的,叫做局部变量;在函数外边定义的,叫做外部变量,也叫全局变量。
- 有时候,可能需要在多个函数中使用共同的一个变量,那么就会用到全局变量。因为全局变量可以被程序中的其他函数所共用。
-
与局部变量不同,如果不对全局变量进行初始化,那么会自动初始化为0;(局部变量不初始化会出现警告)
- 举例(多个函数对全局变量进行操作)
- 结果
- 举例(多个函数对全局变量进行操作)
-
如果在函数的内部存在一个与全局变量同名的局部变量,编译器不会报错,而是在函数中屏蔽全局变量(也就是说在这个函数中,全局变量不起作用,优先使用作用域更小的变量)。
- 举例
- 结果
- 举例
-
extern关键字
- 用extern关键字告诉编译器:这个变量在后边定义了,先别报错。
- 举例(此处应该是extern int count,下面的写法会出现警告)
- 结果
-
注意:不要大量使用全局变量
- 使用全局变量会使程序占用更多的内存,因为全局变量从被定义的时候开始,直到程序退出才被释放。
- 污染命名空间,虽然局部变量会屏蔽全局变量,但这样一来也会降低程序的可读性,很难一下子判断出每个变量的含义和作用范围。
- 提高代码的耦合性,牵一发而动全身,时间久了,代码长了,都不知道全局变量被哪些函数修改过。