static的作用

简介: static的作用

用于修饰全局变量、局部变量和函数。


全局变量和局部变量简解:http://t.csdn.cn/gywDj


1、修饰全局变量


            对于整个工程,也就是多个源文件时;因为全局变量具有外部链接属性。


            在一个工程里,在A源文件里定义的全局变量,在B源文件里可以通过extern使用,但是如果这个全局变量被static修饰,则外部链接属性会变成内部链接属性。


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


81da079355114256b6aec313f14ca965.png

2、局部变量


           局部变量存储在栈区,进入作用域创建,出作用域销毁;但是在被static修饰之后,就存储在了静态区,而存储在静态区的变量,则是到程序结束才释放。但本质上,static修饰只是改变了存储位置,因为存储位置差异,执行效果不同。


       static会改变局部变量的存储位置,并且使它生命周期延长,但不会改变它的作用域。

#include<stdio.h>
void swap() {
  static int d = 3;
  d=5+d;                
   printf("%d\n",d);    //第一次调用时 得d==8;由于static修饰 并且并未销毁
                      //第二次调用时,此时d的值为8,所以经过d=5+d;输出13
}
int main() {
  int a = 10;
   swap(); //第一次调用
     swap();//第二次调用
  }


3、修饰函数

           在修饰全局变量时,描述了全局变量具有外部链接属性,但同样函数也具有外部链接属性;在static的修饰下,也会变成内部链接属性。

         修饰全局变量和修饰函数上有一定的相似度

3b3409f1a4d743ae95a57ebe78396162.png


c语言小知识:


   栈区 局部变量
函数参数
      堆区 malloc
calloc
realloc
free
    静态区 静态变量
全局变量



 创作不易,路过的帅哥美女,动动小手,点点赞咯,蟹蟹啦

                                                                             若文章有问题,请指出,虚心接受批评

目录
相关文章
|
存储 Cloud Native 编译器
C++ static与类
C++ static与类
|
存储 Cloud Native Linux
C++ 关键字override,final的作用
C++ 关键字override,final的作用
|
2月前
|
C语言
static有什么用途
static有什么用途
|
6月前
|
存储 C语言 C++
C/C++静态static属性/用法
C/C++静态static属性/用法
36 0
|
6月前
|
存储 编译器
static存储类
static存储类。
55 0
|
6月前
static的另一用法
static的另一用法。
40 0
|
Java
深入理解static的作用以及被static修饰的变量、方法、块
static关键字有以下三种使用方法: 1.被static修饰的变量属于静态变量,类变量,可以通过类名,变量名直接引用,不需要进行new一个新类。 2.被static修饰的方法属于静态方法,类方法,可以通过类名,方法名直接引用,而不需要new出来一个对象 3.静态块,用于初始化一个类的时候进行一些操作,静态变量、静态方法和静态代码块都只执行一次,而且只在初始化的时候执行。
287 1
是否可以从一个static方法内部发出对非static方法的调用?
这里其实问的是静态方法和非静态方法的区别: 静态方法和非静态方法的区别可以总结如下:
767 0
|
编译器
public final static搭配的好处
final 和 static 往往搭配使用,效率更高,不会导致类加载.底层编译器做了优化处理
174 0
public final static搭配的好处