const static valitate 区别

静态变量 类型说明符是static。

https://www.cnblogs.com/haimeng2010/p/3265051.html

static修饰的变量和函数有可见范围,不能越界访问。

静态变量又分全局静态变量和局部静态变量,区别如下:

(a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。

(b)若程序由多个源文件构成时:全局静态变量使得该变量被定义他的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。

(c)具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过extern的方式引用;

静态全局变量的作用:
(a)不必担心其它源文件使用相同变量名,彼此相互独立
(b)在某源文件中定义的静态全局变量不能被其他源文件使用或修改。
(c)只能在本文件中使用!具有内部链接的静态;不允许在其他文件里调用;


静态局部变量和作用域和局部变量一样,不过生存周期不一样,局部变量在定义局部变量的函数调用完之后就从内存中释放其值,而静态局部变量不释放,等整个程序全部执行结束后才会从内存中释放。

一、volitail起到什么作用

跟踪变量的变化,多线程使用

1)保证了不同线程之间对共享变量操作的可见性,也就是说当一个线程修改volitail修饰的变量,另外一个线程会立即看到最新的值

2)禁止对指令进行重排序操作。

原文地址:https://www.cnblogs.com/liuyueyue/p/13654177.html