全局变量
//
// 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;
}
图一与图二的区别是:在代码中的局部里面是否有与全局变量重名的变量
静态本地变量
//
// 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;
}
静态本地变量实际上是特殊的全局变量,他们位于相同的内存区域
#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;
}