C语言static
static
2016年7月28日 星期四
14:03
只要用static修改的全局变量就是内部全局变量,只能在当前文件中使用,
这样就可以提高我们全局变量的安全性,
如果多个文件中存在同名的内部全局变量,相互不会影响
// extern :
//用于声明一个外部全局变量,其他的文件可以访问
// static :
//用于定义一个内部全局变量,只能当前文件访问
//声明和定义的区别 :
//声明不会开辟存储空间
//定义会开辟存储空间
// 只要在函数的返回值前加上一个extern就可以让函数变为一个外部函数,由于默认就是外部函数,实际开发中extern没人写
// 在全局变量中如果 用extern为关键字声明全局变量,并不会开辟储存空间
// 在全局变量中如果 用static为关键字声明全局变量,定义一个全局变量只能在本文件中使用
// 如果extern写在函数的实现中,代表定义一个外部函数
// 如果extern写在函数的声明中,代表声明一个外部函数
例
#include <stdio.h>
void test();
int main(int argc, const char * argv[]) {
test();
test();
return 0;
}
void test()
{
//局部变量
int a = 0;
//当使用static 来修饰局部变量,那么会延长局部变量的声明周期,
//并且会改变局部变量存储的位置,将局部变量从栈区转移到静态区中
//只要使用static 修改局部变量后,当执行到定义局部变量的代码就会分配存储空间,
//但是只有程序结束才会释放该存储空间
static int b = 0;
a++;
b++;
printf("a = %i \n",a);
printf("b = %i \n",b);
printf("******* \n");
}