static 是C中很常用的修饰符,它被用来控制变量的存储方式和可见性 static 声明的变量在C语言中有两方面的特征:变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。
变量用static告知编译器,自己仅仅在变量的作用范围内可见。
这一点是它与全局变量的区别。
只要输入数据相同就应产生相同的输出。
这个函数之所以是不可预测的,就是因为函数中使用了static变量,因为static变量的特征,这样的函数被称为:带“内部存储器”功能的的函数。
因此如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量,这种函数中的static变量,使用原则是,能不用尽量不用。
将上面的函数修改为可重入的函数很简单,只要将声明sum变量中的static关键字去掉,变量sum即变为一个auto 类型的变量,函数即变为一个可重入的函数。
static函数与普通函数主要有以下两点区别:
1.用static修饰的函数,限定在本源码文件中,不能被本源码文件以外的代码文件调用。
而普通的函数,默认是extern的,也就是说,可以被其它代码文件调用该函数。
2.static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。
static函数相比于普通函数的优点有:
2.static函数不能被其他文件所用。
static是静态变量修饰符,修饰的变量是全局的,所有对象共享,在类初始化时分配内存空间。
static是启动时就被加载,而不管所在的类是否被实例化。
final是最终的,一但复值变不能修改,他定义的变量实际就是常量。