全局初始化变量/全局未初始化变量/全局静态变量/局部变量的存储位置,作用域,与生命周期

比如如下程序代码片段

int a = 0; 
char *p1; 
static int x = 10;
int main(void) 
{ 
    int b = 0; 
    char s1[] = "123"; 
    char *p2; 
    char *s2 = "123"; 
    static int c =0; 
    p1 = (char *)malloc(128); 
    p2 = (char *)malloc(256); 
    free(p1); 
    free(p2); 
    return 0; 
} 
变量类型存储空间作用范围生命周期
a 全局初始化变量.data整个工程程序运行周期
p1 全局未初始化变量.bss 是0整个工程程序运行周期
x 全局静态变量.data当前文档(避免命名冲突)程序运行周期
b 局部变量函数内部函数运行周期
s1 局部变量函数内部函数运行周期
p2 局部变量函数内部函数运行周期
s2 局部变量函数内部函数运行周期
c 静态局部变量.data函数内部程序运行周期

静态区
.data:全局初始化的变量
.bss:全局未初始化变量
.rdata:全局只读

全局变量同一个文件中先定义先初始化,不同不确定

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
全局变量是在程序的任何地方都可以访问的变量,它的生命周期从程序开始执行到程序结束。全局变量作用域是整个程序。 静态变量是在函数内部定义的变量,但是它的生命周期不随函数的调用而结束,而是在整个程序执行期间保持不变。静态变量作用域是定义它的函数内部。 局部变量是在函数内部定义的变量,它的生命周期从函数被调用开始到函数执行结束。局部变量作用域是定义它的函数内部。 静态局部变量是在函数内部定义的静态变量,它的生命周期作用域静态变量相同。静态局部变量只会在第一次调用函数时被初始化,之后每次调用函数时都会保持上一次调用的值。 范例:<<引用:全局变量生命周期作用域是指全局变量在程序中存在的时间和可访问的范围全局变量生命周期从程序开始执行到程序结束,而全局变量作用域是整个程序。静态变量生命周期作用域全局变量相似,但是它们是在函数内部定义的。局部变量生命周期从函数被调用开始到函数执行结束,而局部变量作用域是定义它的函数内部。静态局部变量是在函数内部定义的静态变量,它的生命周期作用域静态变量相同。静态局部变量只会在第一次调用函数时被初始化,之后每次调用函数时都会保持上一次调用的值。>>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值