标签:初始化 二次 调用 全局变量 扩展 关键字 相同 ext 编译器
static关键字是程序模块化不可或缺的一部分,有利于程序的扩展和维护
首先static是在C语言中就被声明了的一个修饰符
局部变量
局部变量在没有进行初始化时的值是不确定的,除非对这个变量进行赋值
普通局部变量存储于进程的栈空间,使用完后会立即释放
如果普通局部变量用static修饰符修饰变成了静态局部变量时,即使没有对这个变量赋初值,,编译器也会把这个变量初始化为0
静态局部变量存储于进程的全局数据区,即使函数返回,他的值也不会变,即,倘若声明在函数中的静态局部变量的值在第一次调用该函数时改动了的话,这个改动是会保存下来的,在第二次函数调用时该静态局部变量的值是改变后的值
全局变量
全局变量是在静态存储区创建的,在程序的运行过程中一直存在
未经初始化的全局静态变量会被自动初始化为0
如果全局变量用了static修饰符修饰变成了全局静态变量的话,那么这个全局变量就只能在当前cpp文件中使用,而其他cpp文件有相同的命名变量的话也不会冲突,全局静态变量的作用域是定义之处开始,到文件结尾。
在函数返回类型前加static,函数就定义为静态函数。函数的定义和声明在默认情况下都是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。
函数的实现使用static修饰,那么这个函数只可在本cpp内使用,不会同其他cpp中的同名函数引起冲突;
warning:不要再头文件中声明static的全局函数,不要在cpp内声明非static的全局函数,如果你要在多个cpp中复用该函数,就把它的声明提到头文件里去,否则cpp内部声明需加上static修饰;
标签:初始化 二次 调用 全局变量 扩展 关键字 相同 ext 编译器
原文地址:https://www.cnblogs.com/buerdepepeqi/p/12237122.html