C 语言——全局变量、与局部变量,全局函数、与内部函数

变量的声明与定义:

  • Int a;是定义型声明,既是声明又是定义,需要分配存储空间
  • Extern a;是引用型声明,只是声明,不需要分配存储空间

1、全局变量与局部变量

全局变量:

  • 编译时分配内存,放在静态存储区里,习惯:首字母大写;。
  • 可以使用extern扩展全局变量的作用域,如extern a;,可以在外部文件中扩展,也可以在同一文件中扩展(如函数B在调用的时候使用了a,但a还没定义)

(当编译的时候,遇到extern时,会先从本文件中查找全局变量的定义,如果找到,就在本文件中扩展作用域;如果没有找到,就在链接的时候,从外部文件中查找全局变量的定义,如果找到,就将作用域扩展到本文件,否则报错)

  • 静态的全局变量:全局变量使用static修饰,仅限于本文件中使用

局部变量:

  • 在需要的时候分配内存
  • 存储类别:auto(动态存储区)、static(静态存储区)、(register(在CPU的寄存器里,更快))
  • 静态局部变量:static int a,虽然调用结束后仍然存在,但其他函数不能引用,因为它是局部变量。

2、全局函数与内部函数

  • 函数默认是全局的,可以被其他文件中的函数调用,当外部需要引用该函数的时候,需要使用函数的原型声明一下,如extern int f(int a);,

    函数原型通知系统,该函数在本文件中稍后定义,或在其他文件中定义。

  • 可以被外部文件引用,也可在在本文件中内其他函数引用(如果用户自定义的函数在主调函数的后面,应该再主调函数中对被调函数做声明。也可进行外部的声明(在文件的开头声明))
  • 内部函数(静态函数):只能在本文件中调用,Static void f(int a)

空函数:在程序设计的第一阶段,主要完成基本的功能,对一些锦上添花的模块,可以先定义一个空函数,以后再完善它。

在定义函数时指定的函数类型一般和return语句的表达式类型一致,如果不一致,以函数类型为准。



你可能感兴趣的:(C语言)