0
点赞
收藏
分享

微信扫一扫

全局变量VS静态变量


全局变量

全局变量VS静态变量_c语言

//
// Created by 王东梁 on 2023/9/18.
//
#include<stdio.h>

int f();

//只能用编译时刻已知的值来初始化,发生在main函数之前
int gAll;

int main(){
    printf("in %s gAll=%d\n",__func__ ,gAll);
    f();
    printf("agn in %s gAll=%d\n",__func__ ,gAll);
    return 0;
}

int f(){
    int gAll=1;//如果函数内部存在与全局变量同名的变量,则全局变量被隐藏
    printf("in %s gAll=%d\n",__func__ ,gAll);
    gAll+=2;
    printf("agn in %s gAll=%d\n",__func__ ,gAll);
    return gAll;
}

图一与图二的区别是:在代码中的局部里面是否有与全局变量重名的变量

全局变量VS静态变量_c语言_02


全局变量VS静态变量_#include_03

静态本地变量

全局变量VS静态变量_开发语言_04

全局变量VS静态变量_c语言_05

//
// Created by 王东梁 on 2023/9/18.
//
#include<stdio.h>

int f();
//只能用编译时刻已知的值来初始化,发生在main函数之前
int gAll=12;

int main(){
    f();
    f();
    f();
    return 0;
}

int f(){
//    int gAll=1;//如果函数内部存在与全局变量同名的变量,则全局变量被隐藏
    static int gAll=1;
    printf("in %s gAll=%d\n",__func__ ,gAll);
    gAll+=2;
    printf("agn in %s gAll=%d\n",__func__ ,gAll);
    return gAll;
}

全局变量VS静态变量_全局变量_06

静态本地变量实际上是特殊的全局变量,他们位于相同的内存区域

#include<stdio.h>

int f();
//只能用编译时刻已知的值来初始化,发生在main函数之前
int gAll=12;

int main(){
    f();
    return 0;
}

int f(){
    int k=0;
    static int all=1;
    printf("&gAll=%p\n",&gAll);
    printf("&all=%p\n",&all);
    printf("&k=%p\n",&k);
    return gAll;
}

全局变量VS静态变量_全局变量_07


举报

相关推荐

0 条评论