前行的路上你是否孤单过,穿梭在这个城市,累了吗,醒了吗,醒了就继续前行吧。
一、
1、static的第一个作用是隐藏:当我们要编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。当在全局变量和函数前加上“static”前缀后,就会对其他源文件隐藏。利用这一个特征可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。
2、static的第二个作用是默认初始化为0,包括未初始化的全局静态变量与局部静态变量。在C语言中,未初始化的静态变量(全局/局部)放在内存的BSS段,而初始化了的放在内存的数据段。其实,全局变量即使不定义为静态,也是会自动被初始化的;而局部变量则不同----局部变量如果是内置类型则不会被初始化,注意,如果只被初始化了一部分,那么其后面的部分将会被初始化为0;如果变量不是内置类型,则不管其在哪定义,都会自动调用其默认构造函数进行初始化。这样讲也许还不会清楚,来看下面的例子:
#include <iostream>#include <string>using namespace std;static int a; int b; string s1[10]; int main() { static int c; int d;string s2[10]; return 0; }
a、b和c被初始化为0;d为函数体内定义的内置类型,元素未被初始化,值不确定; s1和s2为元素类型string的数组,自动调用string类的默认构造函数将各个元素初始化为空字符串;
3、static的第三个作用是保持局部变量内容的持久
不加static前缀的变量,会跟随函数生存期的结束而结束,但是带有static前缀的变量不会;静态局部变量的生存周期虽然为整个源程序,但其作用域仍与局部变量相同,即只能在定义改变量的函数内使用该变量;
二、类中的static的作用
3、
时间: 2024-11-25 20:54:09