1.static修饰的全局变量和普通的全局变量的区别:
static修饰的全局变量只在变量的定义的源文件可以使用,且默认值初始化为0;
普通的全局变量在所有的源文件中都可见,使用static可以避免变量名的冲突
2.static修饰的局部变量和普通的局部变量的区别:
static修饰的局部变量存在于程序的整个生命周期,下一被调用的时候被初始化为上一次的值。其存储位置为全局数据区。
普通的局部变量的生命周期和其作用域相关,每次调用时候都会重新分配。其存储位置在栈区。
3.static修饰的函数和普通的函数的区别:
static修饰的函数只能在定义该函数的源文件中调用,
普通的函数可以被所有的源文件所调用。
最后补充一下各种变量的存储位置:
栈区:局部变量
堆区:new,malloc申请的内存
数据区:静态局部变量和全局变量
代码区:方法函数