静态本地变量(二)

//静态本地变量
#pragma warning(disable : 4996)

#include <iostream>
#include<stdio.h>
int gAll = 12;

//在本地变量定义时加上static修饰符就会成为静态本地变量
//当函数离开的时候,静态本地变量会继续存在并保持其值
//静态本地变量的初始化只会在第一次进入这个函数的时候做以后进入函数会保持上次离开时的值
int f(void);

int main() {
    
    f();

    return 0;

}

int f(void) {
    int k = 0;
    int m = 5;
    static int all = 1;
    printf("&gAll = %p\n", &gAll);
    printf("&all  = %p\n", &all);
    printf("&k    = %p\n", &k);
    printf("&m    = %p\n", &m);
    printf("in %s all = %d\n", __func__, all);
    all += 2;
    printf("agn in %s gall = %d\n", __func__,all);
    /*-------------------------
    
    &gAll = 0109B038
    &all  = 0109B03C
    &k    = 0037FCBC
    &m    = 0037FCB0
    in f all = 1
    agn in f gall = 3

    -------------------------------*/
    //由以上结果可以得出如下结论
    //静态本地变量实际上是特殊的全局变量
    //他们位于相同的内存区域
    //静态本地变量具有全局变量的生存期,函数内的局部作用域
    //static 在这里的意思是局部作用域(本地可访问)

    return all;

}

posted @   江南王小帅  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示