建设工程标准 免费下载网站,软件应用商店,wordpress注册显示密码,免费做公众号的网站static的基本基本用法可以分为下面几种#xff1a; #xff08;1#xff09;static修饰全局变量 #xff08;2#xff09; 修饰局部变量 #xff08;3#xff09;修饰普通函数 #xff08;4#xff09;修饰类的成员变量
一、static修饰全局变量 当同时编译多个文件时…static的基本基本用法可以分为下面几种 1static修饰全局变量 2 修饰局部变量 3修饰普通函数 4修饰类的成员变量
一、static修饰全局变量 当同时编译多个文件时所有未加static前缀的全局变量和函数都具有全局可见性其它的源文件也能 访问。 未加static的全局变量在符号表中是global符号其他目标文件可见这样的符号是要参与符号解析 的。 加了static之后是local符号其他目标文件不可见只在当前文件中可见不参与符号解析过程。所 以多个源文件可以定义同名的static全局变量不会产生重定义错误。 修饰全局变量是改变变量的作用域让它只能在本文件中使用。
二、修饰局部变量 使它放在.data 或者.bss段默认初始化为0初始化不为0放在.data段没有初始化或初始化为0放在.bss段。程序一运行起来就给他分配内存并进行初始化也是唯一一次初始化。它的生存期为整个源程序程序结束它的内存才释放。但是其作用域仍与自动变量相同只能在定义该变量的函数内使用该变量。退出该函数后 尽管该变量还继续存在但不能使用它。 修饰局部变量是改变它的生存期变为和整个程序的生命周期一样。
三、修饰普通函数 和修饰全局变量一样。函数经过编译产生一个函数符号被static修饰后就变为local符号不参与符号 解析只在本文件中可见。
四、修饰类的成员变量 修饰类的成员变量时就变成静态成员变量不属于对象而属于类。不能在类的内部初始化类中只能声明定义需要在类外。类外定义时不用加static关键字只需要表明类的作用域。修饰类的成员函数时。变成静态成员函数也不属于对象属于类。形参不会生成this指针仅能访问类的静态数据和静态成员函数。调用不依赖对象所以不能作为虚函数。用类的作用域调用。也分公有私有。
注意静态成员函数不能加const限定符因为没有this指针。和const限定符本身含义冲突