静态变量和全局变量的区别(static关键共有多少种用法)
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关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,
不能被其它文件使用。其它文件中可以定义相同名字的函数,不会发生冲突。
除注明外的文章,均为来源:老汤博客,转载请保留本文地址!
原文地址:https://tangjiusheng.cn/it/4041.html
原文地址:https://tangjiusheng.cn/it/4041.html