静态变量和全局变量的区别

1、修饰变量(局部和全局变量)


①静态全局变量:


在全局数据区分配内存;未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化);


作用域仅限于变量被定义的文件中。

全局变量和全局静态变量的区别:


1)全局变量是不显式用static修饰的全局变量,但全局变量 默认是静态的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,


通过extern 全局变量名的声明,就可以使用全局变量。


2)全局静态变量是显式用static修饰的全局变量,作用域是所在的文件,其他的文件即使用extern声明也不能使用。


② 静态局部变量


static int j;


void fun1 (void)


{


static int i = 0;


i++;


}


void fun2 (void)


{


j = 0;


j++;


}


int main(void)


{


int k;


for(k = 0; k < 10; k++)


{


fun1();


fun2();


}


return 0;


}

2 修饰函数


1、静态函数


在函数的返回类型前加上static关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,


不能被其它文件使用。其它文件中可以定义相同名字的函数,不会发生冲突。

静态变量和全局变量的区别