关键词搜索

源码搜索 ×
×

static的作用

发布2022-11-02浏览329次

详情内容

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

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

1、修饰全局变量

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

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

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

2、局部变量

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

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

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

3、修饰函数

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

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

c语言小知识:

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

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

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

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载