c语言中,static同时具有两种含义:
1.存储区域方面。static表示静态,全局。static变量其存储区域是全局的,不是放在堆或者栈中,即下一次访问时,还会保持原来的值。对于static函数,当然不存在存储区方面的含义。
2.访问范围方面。static表示其访问范围是当前文件。这个特性对于变量和函数是一样的。
访问范围 |
全局 |
局部 | ||
存储区域 |
静态 |
动态 |
静态 |
动态 |
变量 |
int a;//在函数外定义 |
无 |
static int a;//在函数外定义 |
int a;//在函数内定义 |
函数 |
void fun(){}; |
static void fun(); |
函数无所谓存储区域,只有变量才和存储区域有关,而且全局变量都是静态的,没有动态的。