1.函数的声明和定义
函数一般由两部分组成:1)声明部分;2)执行语句。
1.1)函数的声明是函数的原型
声明部分的作用:对有关标识符的属性进行说明。
标识符例如变量、函数体、结构体、共用体等。
1.2)函数的定义是函数功能的确立
函数的声明在声明部分,也可以在定义部分。
函数的定义肯定不在函数的声明部分,它是一个文件中的独立模块。
2.变量的声明和定义(难)
2.1)变量的声明
声明部分的变量有两种:
1)需要建立存储空间的变量(如 int a;)——定义性声明(定义),即可说是声明,也可说是定义。
2)不需要建立存储空间的变量(如extern int a;)——引用性声明,是声明,不是定义
不需要建立存储空间的声明称为声明。
所谓声明,其作用就是向编译系统发出一个信息,声明该变量是一个在后面定义的外部变量,仅仅是为了提前引用该变量而作的声明。
2.2)变量的定义
需要建立存储空间的声明称为定义。
系统根据外部变量的定义分配存储单元,而不是根据声明分配存储单元。
外部变量的初始化只能在定义时进行,不能在声明中进行。
extern 只用作声明,不用于定义。
例如:
int main()
{
extern int a; //是声明,不是定义。声明a是一个已定义的外部变量。
...
}
int a; //是定义,定义a为整型外部变量
外部变量的定义只能有一次,它的位置在所有函数之外。
而同一文件中,外部变量的声明可以有多次,它的位置可以在函数之内,也可以在函数之外。
函数之内:哪个函数要用变量,就在哪个函数中声明。
函数之外:在外部变量的定义之前进行声明。
extern 只用作声明,不用于定义。
static 声明变量的作用:
1)static 声明局部变量;
该变量在本函数调用结束后不释放,整个程序执行期间始终存在,变量的存储期为程序的全过程。
2)static 声明全局变量;
变量的作用域只限于本文件模块,即被声明的文件库中。