找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2614|回复: 2
收起左侧

C语言变量的作用域与存储类型

[复制链接]
ID:693666 发表于 2020-2-15 22:36 | 显示全部楼层 |阅读模式
1 变量的定义三方面:
(1)数据类型:占用内存空间大小(int,double等)
(2)作用域:有效性范围
(3)存储类型:在内存的存储方式

  • 这里又引入一个概念-“生存期”,即变量在程序中的建立和消亡时间
存储类型决定变量的生存期和作用域

2 在内存中,供用户使用的三种空间:
(1)程序区:存放代码
(2)静态和动态存储区:存放数据
a.静态存储区:在编译时就分配了内存空间,在整个程序执行中,内存单元一直保持到程序结束才释放
b.动态存储区:只有当程序执行到变量所在的函数被调用时,系统才为其分配内存空间,函数调用结束,变量即被释放,
  
  
  
何时分配内存空间
  
  
何时释放
  
  
生存期
  
  
静态存储区
  
  
在程序编译时
  
  
程序结束
  
  
整个程序的运行期间
  
  
动态存储区
  
  
只有当程序执行到变量所在的函数被调用时
  
  
函数调用结束
  
  
函数的调用期间
  


3 变量的分类
(1)局部变量:在一个函数内部或者某个复合语句内部定义的变量
(2)全局变量:在所有函数外部定义的变量。(默认初值为0)
  
  
  
作用域
  
  
存放区域
  
  
特点
  
  
局部变量
  
  
局限于定义它的函数或复合语句
  
  
动态存储区
  
  
在不同的函数中允许同名,
  
如果变量名相同,则当前局部变量优先
  
  
全局变量
  
  
从定义变量的位置开始到源程序结束
  
  
静态存储区
  
  


       


         
    • 若局部变量与全局变量同名,则局部变量优先,即在该函数或复合语句内,全局变量不起作用;
    • 如果要在变量定义之前使用它,需用extern加以声明可扩展全局变量作用域;
      
  


回复

使用道具 举报

ID:446775 发表于 2020-2-16 12:12 | 显示全部楼层
受教了!
回复

使用道具 举报

ID:691354 发表于 2020-2-18 19:34 | 显示全部楼层
局部变量一定存在动态存储区,全局变量一定存在静态存储区,这句话对吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表