c语言变量的存储方式和生存期 -考察

  1. 全局变量和局部变量

 (1)局部变量(讨论在一个C源文件中)

1)who is 局部变量:a.函数内定义的变量  b.函数内的复合语句内定义的变量  c.函数的形参

                                   类比:a-酒店的住客房间盒子, b-酒店内住客的房间内的小房间的盒子 ,c-外卖送到房间内的盒子

     what is 局部变量特性:a.不同房间内的局部变量可以同名,类比,不同房间内的盒子可以有相同的编号;

(2)全局变量(考虑在一个C源文件中)

1)who is 全局变量:在函数外定义的全局变量,从定义行到所在文件结束都是全局变量的范围;

                                     类比:有放在一楼总大厅内的盒子(在main()前定义的全局变量,在所有子函数中),有放在2楼大厅内的盒子(只对2楼及以上的楼层有效),有放在3楼大厅内的盒子(只对3楼及以上的楼层有效),等等,以此类推;

2.动态存储和静态存储

(1)寄存器变量,auto局部变量(包括复合语句中的子局部变量),形参 这三者按照动态存储;

动态存储的变量在函数调用结束后存储空间就销毁。相当于一次性餐盒;

(2)外部变量,static局部变量都是静态存储,其值从编译时初始化,一直到程序结束;

重点:局部变量加了static ,不影响作用域,而影响生存期,即在函数调用结束后,其存储空间仍然存在,其值仍存在;而对于外部变量加了static,不影响其生存期和本文件内的作用域,而影响其在其它文件的作用域,即不允许其在其它文件有作用域;

思考: 变量因函数定义而存在,变量的作用域针对的是函数的定义,而不是函数的调用,即只在函数调用前定义的变量是无法给在函数定义中使用的,除非你使用extern 将变量的作用域扩展到要使用的函数定义前;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值