【C++】面向过程中的static

全局静态变量:

相比于全局变量,全局静态变量只在定义它的源文件中才可以调用!在其他源文件(.cpp)调用会报错。

在其他源文件中,要是想调用这个全局静态变量,只能是在定义该全局静态变量的源文件中,创建一个返回值为该全局静态变量的函数,完了在其他源文件中调用这个函数。

 

局部静态变量:

1. 相比于局部变量,局部静态变量只能在定义它的函数内部被调用!在定义它的函数之外或者其他源文件都不能被调用。

2. 相比于局部变量,局部静态变量的值在每次调用完定义它的函数之后,会保持下来;而普通局部变量则不然,每一次调用定义它的函数时候,都会被重新赋值0。

举例:

  1. void printStr()
  2. {
  3.         int normal = 0;
  4.         static int stat = 0;        //this is a static local var
  5.         printf("normal = %d ---- stat = %d\n",normal, stat);
  6.         normal++;
  7.         stat++;
  8. }
  9. printStr();
  10. printStr();
  11. printStr();

stat是局部静态变量,normal是普通静态变量,在9、10、11行调用了三次printStr(),每次调用printStr()时,normal会被重新赋值为0;stat则不会,它会维持上次被调用时的值!

 

静态函数:

类似于全局静态变量,在其他源文件中不可调用,也就是不会成为给其他源文件的接口。

 

没有更多推荐了,返回首页