1.static 全局变量与普通全局变量的区别:
在定义变量时,全局变量之前再冠以 static
就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。两者在存储方式上并无不同。两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其他源文件中不能使用。由于静态全局变量的作用域局限域于一个源文件内,只能为该源文件内的函数使用,因此可以避免其他源文件
使用该变量。把普通全局变量改变为静态全局变量是改变了他的作用域,限制了他的使用范围。
2.static 局部变量和普通局部变量的区别:
普通局部变量所在的函数每次被调用都会被重新定义并分配存储空间,而 static 局部变量不会,他的值始终保存着。static
局部变量只被初始化一次,下一次使用时依旧是上一次的值。
3.static 函数与普通函数的区别:
static 函数(即静态函数,在函数定义时加上了static
关键字)与普通函数作用域不同,他仅存在于文本文件中。只在当前源文件中使用的函数应该说明为内部函数(即加上static关键字)。内部函数应该在当前
源文件中声明和定义。对于可在当前源文件以外的函数,应该在一个头文件中说明,要使用这个函数的源文件要包含这个头文件。另:程序的普通全局变量存在于堆
栈中,全局变量、static 局部变量存在于静态存储区中。
PS: 以前学习C语言时做的笔记,今天再一次看到就写在博客里面了。