当前位置:网站首页>c语言变量的存储方式和生存期 -考察
c语言变量的存储方式和生存期 -考察
2022-07-30 06:10:00 【gyroRdy】
- 全局变量和局部变量
(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 将变量的作用域扩展到要使用的函数定义前;
边栏推荐
猜你喜欢

Go语学习笔记 - gorm使用 - 数据库配置、表新增 Web框架Gin(七)

“AI教练”请进家,家庭智能健身蓬勃发展

Go combines Gin to export Mysql data to Excel table

便携小风扇PD取电芯片

New breakthrough in artificial muscle smart materials

No, the Log4j vulnerability hasn't been fully fixed yet?

Mybitatis相关配置文件

2020 ACM | MoFlow: An Invertible Flow Model for Generating Molecular Graphs

BGP:边界网关路由协议 无类别的路径矢量EGP协议

bean的生命周期
随机推荐
Keil软件中map文件解析
ARM体系结构概述
从追赶到超越,国产软件大显身手
Goto statements
Keil compile size and storage instructions
Headline 2: there are several kinds of common SQL errors in MySQL usage?
[GO Language Basics] 1. Why do I want to learn Golang and get started with GO language
UDP和TCP使用同一个端口,可行吗?
roslyn folder under bin folder
What happens when @Bean and @Component are used on the same class?
How to understand plucker coordinates (geometric understanding)
【day5】数组
Vue项目通过node连接MySQL数据库并实现增删改查操作
树状数组的基本用法
Derivative Operations on Vectors and Derivative Operations on Vector Cross and Dot Products
A magical no main method of code
Go uses freecache for caching
MySQL off-topic [ORM thought analysis]
适合程序员的输入法
mysql高阶语句(一)