l 全局变量的作用域:从定义的位置开始到本文件的结束。C语言规定,如果全局变量和局部变量同名,则在二者的作用域重叠的区间局部变量有效,全局变量不起作用。
l 1.由于全局变量属于程序中的所有函数,因此在程序执行过程中,一直占用存储空间,即使正在执行的函数根本不用这些全局变量,全局变量也要占用存储空间
2.在某函数中若用到了全局变量,则所有调用该函数的住掉函数都要使用这些全局变量,从而降低了函数的通用性
l 变量和函数的基本属性:
1. 数据类型:如整型,实型和字符型
2. 存储类型:制动类型(auto)、静态类型(static)、寄存器类型(register)和外部类型(extern)
l 动态变量(auto)。对于局部变量,若不加以任何说明,默认为动态变量。动态变量的赋初值是在调用函数时进行的,在函数执行结束时,释放其存储单元,变量的数据丢失。再次调用函数的时候,又重新为动态变量赋初值,若没有为动态变量赋初值,则动态变量的初值是随机的。
l 局部静态变量(static)赋初值是在编译的时候进行的,若没有为静态变量赋初值的语句,则自动初始化为0.静态变量的值是在函数调用结束时仍保留,在下次调用该函数的时候,静态变量的值是上次调用结束时的值,而不再重新赋初值。
l 外部变量(extern)扩展全局变量的作用域。
1. 在全局变量的定义点之前的函数要使用该变量,则要先用extern声明外部变量。如:
extern d;//声明外部变量d
d+=a;//在d定义之前使用该全局变量
int d=5;//定义全局变量d
2. 一个C语言程序可以由一个或者多个源文件组成。对于多文件的C程序,若一个文件中的程序要使用另外一个文件中的全局变量,就要用extern声明外部变量,这样就可以将全局变量的作用域扩展到其他文件。
l 静态外部变量:用static声明的全局变量。这种变量只能被本文件中的函数使用。其他文件即使使用extern声明该变量也无法使用。