static 作用:
1 修饰局部变量:表示该局部变量只初始化一次,地址空间不释放
2 修饰全局变量:表示该全局变量只在此文件中使用,别的文件无法访问此变量
3 修饰函数: 表示修饰的函数只在此文件中使用,别的文件无法使用该函数
void fun()
{static int data1 = 0;int data2 = 0;data1++;data2++;printf("data1 = %d",data1);printf("data2 = %d",data2);return;
}int main()
{fun();fun();fun();return;
}
可以得到结果,data1的值分别为 1,2,3.而data2的值为1,1,1.因为每次调用data2都从0开始,data1只有第一次是0,后面每次调用都加一。
volatile作用:
修饰局部变量,告诉编译器,修饰的变量值可能在中断中修改,需要从变量地址取值。一般中断中会修改的全局变量使用volatile修饰。