C语言中static,const和static const 的区
2018-07-14 本文已影响1人
小太阳花儿
1.const规定了一个变量在它初始化值之后,值不能再改变,也就是只读。
来看个例子:
![](https://img.haomeiwen.com/i1233188/3d3232e628bec0c7.png)
在这个测试程序里,我试图在初始化变量c的值之后再修改c的值,编译直接报错,告诉我c已经是一个只读变量了,不可以改值。
2.static在函数内的时候,表明这个变量在函数的生命周期结束之后也不会被释放。
![](https://img.haomeiwen.com/i1233188/120958111d83a8dd.png)
在第一次调用test()时,如果static int b没有被我赋初值,也会被默认赋值成0。然后执行自增运算,所以输出1。第二次调用test()时如果是普通的变量,则会被重新分配内存,但static类型的变量上次执行test函数之后没有被释放,而是保存在全局变量区,所以继续加一变成2。
对比一下非static的变量会怎样:
![](https://img.haomeiwen.com/i1233188/850696559bc1e0f4.png)