c中变量存储位置分析

c与样中变量通常分为:

  1. 自动局部变量
  2. 静态局部变量
  3. 全局变量
  4. 静态全局变量

在分析各变量存储位置之前,说一下c程序的布局吧! 先上个图

  1. Text Segment:存放正文,为机器执行指令
  2. Initialized Data Segment( Ds):初始话数据存放
  3. Uninitialized Data Segmen( .bss):未初始化数据存放
  4. Stack:自动变量存放及函数调用信息存放
  5. Heap:动态存储,存放程序运行时所动态分配的数据

说回变量存放位置分析

  1. 未初始化的静态变量(全局或局部)和全局变量存放在.bbs数据段
  2. 初始化的静态变量(全局或局部)和全局变量存放在Ds数据段
    注意:  Initialized Data Segment(  Ds)又可更细化的分为只读区和可读写区
             例如:全局变量 char *p="shi" 和 char p[]="shi";
                         char *p="shi"中, 指针变量将存放在Ds数据段的读写区,“shi”字符串将存放在Ds数据段的只读区
                         char p[]="shi"中, p数组将占用4个字节,存放在Ds数据段的可读写区
  3. 自动局部变量将存放在stack区中,能够自动释放


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值