static--静态存储分配,又分为内部和外部静态。extern--全局变量(用于外部变量说明)。
。(2)外部变量①在函数外部定义的变量即为外部变量。②外部变量的作用域是整个程序(全局变量)。③在C+ +中,程序可以分别放在几个源文件上,每个文件可作为一个编译单位分别编译。外部变量只需在某个文件上定义一次,其他文件若要引用此变量时,应用extern加以说明。(外部变量定义时不必加extern关键字)。④在同一文件中,若前面的函数要引用在其后面定义的外部(在函数之外)变量时,也应用extern加以说明。⑤外部变量是由编译程序在编译时给其分配空间,属于静态分配变量,对于数值型(整型、浮点型和字符型)外部变量来说,其有隐含初值0。引进外部变量的原因:其一是只要程序运行外部变量的值是始终存在的;其二是外部变量可以在所有函数间共享。在C+ +中,可以使用外部变量,但是,必须要清楚使用外部变量的副作用。使用外部变量的函数独立性差,通常不能被移植到其他程序中,而且,如果多个函数都使用到某个外部变量,一旦出现问题,就很难发现问题是由哪个函数引起的。在C+ +中,尽量不用或少用外部变量,可使用参数在函数间进行数据的传递。(3)静态变量内部静态变量:①在局部变量前加上"static"关键字就成为内部静态变量。②内部静态变量仍是局部变量,其作用域仍在定义它的函数内。但该类型变量采用静态存储分配,当函数执行完,返回调用点时,该变量并不撤消,其值将继续保留,若下次再进入该函数时,其值仍然存在。内部静态变量有隐含初值0,并且只在编译时初始化一次。外部静态变量:①在函数外部定义的变量前加上"static"关键字便成了外部静态变量。②外部静态变量的作用域为定义它的文件,即成为该文件的"私有"(private)变量,只有其所在文件上的函数可以访问该外部静态变量,而其他文件上的函数一律不得直接访问该变量,除非通过外部静态变量所在文件上的各种函数来对它进行操作,这也是一种实现数据隐藏的方式。③与内部静态变量一样,外部静态变量也采用静态存储分配,有隐含初值0。在C+ +中,除了支持C风格的内部和外部静态变量的使用之外,还可将类成员声明成static,它有着不同的含义。