通俗易懂,Static在c语言中的作用与使用场景

在c语言中:

static是用来修饰变量和函数的:

1.修饰局部变量-称为静态局部变量

2.修饰全局变量-称为全局变量

3.修饰函数-称为静态函数

普通的局部变量:自动创建,自动销毁,生命周期为局部内

1.修饰局部变量-称为静态局部变量

通俗易懂,Static在c语言中的作用与使用场景_第1张图片

这是没有static修饰的局部变量,可以看出执行while的时候每一次的循环都需要重新调用一次test(),但是test里面的变量是局部变量,出了作用域以后自动销毁,并不记录上一次变量的值

通俗易懂,Static在c语言中的作用与使用场景_第2张图片

当static修饰局部变量的时候改变了这个局部变量的生命周期

通俗易懂,Static在c语言中的作用与使用场景_第3张图片

以上是变量在计算机中位置

Static修饰局部变量,是改变了变量的存储类型,本来局部变量是放在栈区的,被static修饰后存放在内存的静态区了,因为存储类型改变的缘故,从而导致了生命周期变长

但是,不影响作用域

2.修饰全局变量-称为全局变量

修饰全局变量一般在多个文件中使用,这里先声明如果想在a文件中使用b文件中的全局变量必须要在a文件中用extern来修饰全局变量,如下图:

通俗易懂,Static在c语言中的作用与使用场景_第4张图片

全局变量本身是具有外部链接属性的,就算不加extern也一样,只不过不能在别的文件中使用

当我们加入static后:

通俗易懂,Static在c语言中的作用与使用场景_第5张图片

发现就算有extern也不能调用另一个文件中被static修饰的全局变量了

原因:

1.static修饰全局变量后,将外部链接属性变成了内部链接属性。

2.此时的全局变量只能在自己的.c文件中使用,其他文件无法链接使用

给我们的感觉:static就像是能影响变量的作用域

3.修饰函数-称为静态函数

修饰函数其实本质上和修饰全局变量比较类似,大多都是在多文件的情况下使用

通俗易懂,Static在c语言中的作用与使用场景_第6张图片

函数也是具有外部链接属性

  1. static修饰函数后,将外部链接属性变为了内部链接属性

  1. 使得这个函数只能在自己的.c文件中使用,其他的.c文件无法链接使用

总结:static就像是一种保护机制,在全局变量和函数中能够缩小变量的作用域,在局部变量中延长了他的生命周期,当我们想创建一个变量或者函数又不想这个变量被其他文件使用,或者不想他被改变的时候可以用static对变量或者函数进行修饰。

你可能感兴趣的:(c语言,开发语言,visual,studio)