美文网首页
静态本地变量

静态本地变量

作者: 爱生活_更爱挺自己 | 来源:发表于2020-11-10 18:47 被阅读0次

静态本地变量

  • 在本地变量定义是加上static修饰符就成为静态本地变量
  • 当函数离开的时候,静态本地变量会继续存在并保持其值
  • 静态本地变量的初始化在第一次进入这个函数时做,以后进入函数时会保持山上次离开时的值
#include<stdio.h>

int f(void);

int main(int argc, char const *argv[])
{
    f();
    f();
    f();
    return 0;
}

int f(void)
{
    static int all = 1;
    printf("in %s all=%d\n", __func__, all);
    all += 2;
    printf("agn in %s all=%d\n", __func__, all);
    return all;
}
in f all=1
agn in f all=3
in f all=3
agn in f all=5
in f all=5
agn in f all=7

  • 静态本地变量实际上是特殊的全局变量
  • 他们位于相同的内存区域
  • 静态本地变量具有全局的生存期,函数内的局部作用域
    • static在这里的意思是局部作用域(本地可访问)
#inlcude<stdio.h>

int f(void);

int gAll = 12;

int main(int argc, char const *argv[])
{
    f();
    return 0;
}

int f(void)
{
    int k = 0;
    static int all = 1;
    printf("&gAll=%p\n", &gAll);
    printf("&all =%p\n", &all);
    printf("&k   =%p\n", &k);
    printf("in %s all=%d\n", __func__, all);
    all += 2;
    printf("agn in %s all=%d\n", __func__, all);
    return all;
}
&gAll=00402000
&all =00402004
&k   =0060FEFC
in f all=1
agn in f all=3

*返回指针的函数

  • 返回本地变量的地址是危险的
  • 返回全局变量或者静态本地变量的地址是安全的
  • 返回在函数内malloc的内存是安全的,但是容易造成问题
  • 最好的做法是返回传入的指针

相关文章

  • 静态本地变量

    静态本地变量 在本地变量定义是加上static修饰符就成为静态本地变量 当函数离开的时候,静态本地变量会继续存在并...

  • JAVA高级开发-学习笔记(volatile关键字)

    一、变量分为哪几类 全局变量 = 属性(静态的、非静态的)局部变量 = 本地变量、参数 二、多线程间共享数据 全局...

  • ThreadLocal源码学习

    线程本地变量:线程本地变量通常是一个类中的私有静态的成员变量。我们可以在不同的线程中的调用线程本地变量的get和s...

  • 栈基础知识

    1.C语言变量的分布 : C 语言有全局变量(Global)、本地变量(Local),静态变量(Static)、寄...

  • java内存模型

    引用: Java内存模型 java内存模型线程栈:本地变量,堆:对象,对象成员变量,静态成员变量 如果两个线程同时...

  • Java 虚拟机之内存分配垃圾收集

    运行数据区 GC Roots 虚拟机栈中引用的变量(本地变量) 方法区中类的静态属性(类的静态属性) 方法区中常量...

  • Java中的三种变量

    三大变量分别是类变量(静态变量)、实例变量和局部变量(本地变量)。所有的局部变量都存储在线程的栈中,而所有的类变量...

  • Java高并发-缓存

    缓存 提高数据命中率 缓存分类和应用场景 本地缓存:编程实现(成员变量、局部变量、静态变量)Guava Cache...

  • C/C++ 访问 Java 实例变量和静态变量

    实例变量和静态变量在上一章中我们学习到了如何在本地代码中访问任意 Java 类中的静态方法和实例方法,本章我们也通...

  • Solidity语法(一)值类型(Value-Types)

    由于Solidity是一个静态类型的语言,所以编译时需明确指定变量的类型(包括本地变量或状态变量),Solidit...

网友评论

      本文标题:静态本地变量

      本文链接:https://www.haomeiwen.com/subject/ywgjbktx.html