C语言中全局变量和局部变量,内部函数和外部函数的区别

1.局部变量和全局变量

1.局部变量:即在函数代码块中内部定义的变量名,只在此函数范围内有效。(只在子程序内定义和作用)

       在c语言中,局部变量可以和全局变量重名,但是局部变量会覆盖全局变量,从而在引用此变量时会用到同名的局部变量而非全局变量。一个局部变量被其他对象引用时,会是一个空值,全局变量却不会。

2.全局变量:既可以是对于某对象函数(子程序)创建,也可以在程序的任何地方创建,且可以被本程序所有对象或函数引用。

       全局变量可增加函数间数据联系的渠道:由于同一文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变量的值,就能影响到其他函数中全局变量的值,相当于各个函数之间有直接的传递渠道。

3.使用注意:

  1. 全局变量因生命周期更长,会占用相对更多内存。
  2. 全局变量因内存不需再重新分配,因此运行速度能相对提高。
  3. 重名时,局部变量覆盖全局变量。
  4. 可以用extern对外部变量(子程序外部)进行声明,使全局变量作用域从声明处起直至子程序文件结束。(变量只能定义一次,却可以声明多次。定义分配存储空间,而声明不会
  5. 为了便于区别两者,C程序设计人员有一个习惯,将全局变量名的第一个字母大写。如:float Max=0,Min=0;  //定义全局变量Max,Min
  6. c语言规定,变量要定义在当前代码块的最前面。

2.内部函数和外部函数

1.内部函数:只被本文件中其他函数所调用。

        定义内部函数时,在函数名、函数类型前加 static 。 static 类型名 函数名(形参表); 例如:static int fun(int a,int b);

2.外部函数:可供其他文件调用。

        定义外部函数时,在函数首部左端加 extern。例如:extern int fun(int a,int b);

        若在定义函数时省略extern,则默认为外部函数。

你可能感兴趣的:(c语言,数据结构)