1.局部变量和全局变量
1.局部变量:即在函数代码块中内部定义的变量名,只在此函数范围内有效。(只在子程序内定义和作用)
在c语言中,局部变量可以和全局变量重名,但是局部变量会覆盖全局变量,从而在引用此变量时会用到同名的局部变量而非全局变量。一个局部变量被其他对象引用时,会是一个空值,全局变量却不会。
2.全局变量:既可以是对于某对象函数(子程序)创建,也可以在程序的任何地方创建,且可以被本程序所有对象或函数引用。
全局变量可增加函数间数据联系的渠道:由于同一文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变量的值,就能影响到其他函数中全局变量的值,相当于各个函数之间有直接的传递渠道。
3.使用注意:
全局变量因生命周期更长,会占用相对更多内存。全局变量因内存不需再重新分配,因此运行速度能相对提高。重名时,局部变量覆盖全局变量。可以用extern对外部变量(子程序外部)进行声明,使全局变量作用域从声明处起直至子程序文件结束。(变量只能定义一次,却可以声明多次。定义分配存储空间,而声明不会。)为了便于区别两者,C程序设计人员有一个习惯,将全局变量名的第一个字母大写。如:float Max=0,Min=0; //定义全局变量Max,Minc语言规定,变量要定义在当前代码块的最前面。
2.内部函数和外部函数
1.内部函数:只被本文件中其他函数所调用。
定义内部函数时,在函数名、函数类型前加static。 static 类型名 函数名(形参表); 例如:static int fun(int a,int b);
2.外部函数:可供其他文件调用。
定义外部函数时,在函数首部左端加extern。例如:extern int fun(int a,int b);
若在定义函数时省略extern,则默认为外部函数。