【关键字】static在C语言中的使用

简介: 【关键字】static在C语言中的使用

static

static是C语言规定的关键字。

static意思是静态的,在C语言中的使用方法:

1.修饰局部变量

2.修饰全局变量

3.修饰函数

修饰局部变量

void fun()
{
  int count = 0;
  ++count;
  printf("%d\n",count);
}
int main(void)
{
  for (int i = 0; i < 10; i++)
  {
    fun();
  }
  return 0;
}

观察这段代码了解到printf每次打印的count都是0,说明每次进入函数fun时,都会执行int count = 0;这句代码,将count重新在栈区创建出来,出了fun这个函数count会被释放。

普通的局部变量是放在栈区上的,这种局部变量进入作用与创建,出了作用域释放。

//修饰全局变量
void fun()
{
  static int count = 0;
  ++count;
  printf("%d\n", count);
}
int main(void)
{
  for (int i = 0; i < 10; i++)
  {
    fun();
  }
  return 0;
}

如果将count被static修饰,函数fun在每次执行时会将上一次使用过的count保存下来,调用监视可以发现,count在出了作用域时不会被释放,而在进入函数fun时,也不会经过static int count = 0;将count初始化为0。

说明局部变量被static修饰后,这种变量就放在静态区,放在静态区的变量,创建好后,直到程序结束后才被释放。

原本未被static修饰的变量会被放在栈区,进入作用域创建,出了作用域释放,而被static修饰后,变量会被存储在静态区。

本质上,static的修饰改变了局部变量的存储位置,因为存储位置的差异,使得执行效果不一样。

被static修饰是不影响作用域的,但是生命周期变长。

修饰全局变量

//test.c文件
extern int number;
int main(void)
{
  printf("%d\n",number);
  return 0;
}
//num.c文件
int number = 10;

当我们在一个工程中使用俩个.c程序,可以使用extern来声明另一程序中的外部符号,全局变量本身是具有外部链接属性的。

在A文件中定义的变量,在B文件中可以通过【链接】使用

//test.c文件
extern int number;
int main(void)
{
  printf("%d\n",number);
  return 0;
}
//num.c文件
static int number = 10;

如果全局变量被static修饰,这个外部链接属性就变成了内部链接属性,这个全局变量只能在自己所在的源文件内部使用

static的修饰,会把外部链接属性变成内部链接属性,最终使得全局变量的作用域变小

修饰函数

//test.c文件
extern int add(int x, int y);
int main(void)
{
  int ret = add(2, 3);
  printf("%d", ret);
  return 0;
}
//add.c文件
int add(int x,int y)
{
  return x + y;
}

同样使用extern来声明外部符号,函数本身是具有外部链接属性的

//test.c文件
extern int add(int x, int y);
int main(void)
{
  int ret = add(2, 3);
  printf("%d", ret);
  return 0;
}
//add.c文件
static int add(int x,int y)
{
  return x + y;
}

被static修饰后,外部链接属性就变成了内部链接属性。

使得这个函数只能在自己所在的源文件内部使用,其他源文件无法使用,限制了作用域.

相关文章
|
3月前
|
存储 缓存 编译器
【关键字】——register在C语言中的使用
【关键字】——register在C语言中的使用
|
4月前
|
C语言
|
存储 编译器 C语言
【C语言】关键字static——static修饰局部变量、全局变量和函数详解!
【C语言】关键字static——static修饰局部变量、全局变量和函数详解!
340 0
|
6月前
|
存储 编译器 C语言
c语言中的关键字
c语言中的关键字
85 0
|
6月前
|
C语言
C语言中关键字static的三种用法
C语言中关键字static的三种用法
|
C语言
关键字static在C语言中的三种用法
关键字static在C语言中的三种用法
66 0
|
C语言
04 C语言 - 关键字
04 C语言 - 关键字
23 0
|
存储 Java 编译器
【C语言】静态关键字static的用法(详解)
不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。这篇文章主要介绍了C语言中静态关键字static的作用,对大家学习C语言非常有帮助。
164 0
|
存储 C语言 C++
C语言中static的用法
C语言中static的用法
228 0
|
C语言
【C语言】详解静态变量static
【C语言】详解静态变量static
122 0
下一篇
无影云桌面