内存四区模型

作用域

c语言变量的作用域分为:

  • 代码块作用域(代码块是{}之间的一段代码)
  • 函数作用域
  • 文件作用域

变量的作用范围

变量的作用范围:从创建到所在函数结束

局部变量

  • 局部变量也叫auto自动变量,一般情况下代码块{}内定义的变量都是自动变量。
  • 在一个函数内定义,只在函数范围内有效
  • 在复合语句中定义,只在复合语句中有效
  • 随着函数调用的结束或复合语句的结束,局部变量的声明、生命周期也结束
  • 如果没用赋初始值,内容为随机

全局变量

  • 在函数外部定义
  • 全局变量作用整个项目中
  • 使用的前提是需要在使用的文件中进行声明
  • 全局变量名称不能重复

静态局部变量

  • static局部变量的作用域也是在定义的函数内有效
  • static局部变量的生命周期和程序运行周期一样,同时static局部变量值只初始化一次,但可以多次赋值
  • static局部变量若未赋以初值,则由系统自动赋值:数值型变量自动赋值0;字符型变量赋值空字符

静态全局变量

  • 在函数外定义,作用范围被限制在所定义的文件中
  • 不同文件静态全局变量可以重名,但作用域不冲突
  • static全局变量的生命周期和程序运行周期一样,同时static全局变量的值只初始化一次

extern全局变量声明

extern int a;声明一个变量,这个变量在别的文件中已经定义了,这里只是声明,而不是定义

全局函数和静态函数

在c语言中函数默认都是全局的,使用关键字static可以将函数声明为静态函数,函数定义为static就意味着这个函数只能在定义这个函数的文件中使用,在其他文件中不能调用,即使在其它文件中声明这个函数都没用

对于不同文件中的static函数名字可以相同

代码区

程序指令,存放函数体的二进制代码。  

数据区:(静态区 全局区)

初始化的数据

1、初始化的全局变量

2、初始化的静态全局变量

3、初始化的静态局部变量

未初始化的数据

1、未初始化的静态局部变量

2、未初始化的全局变量

3、未初始化的静态全局变量

字符串常量

栈区

由编译器自动分配释放,存放函数的参数值,局部变量的值等。其 
 操作方式类似于数据结构中的栈。
 栈区大小:
 在不同的操作系统中系统分配给每一个系统的栈区空间大小不同,一般windows 是1-8m不等,一般linux是1-16m不等
 
 非静态局部变量
 数组
 结构体
 指针
 枚举
 函数形参
 常量

堆区

  • 音频文件
  • 视频文件
  • 图像文件
  • 文本文件
    大的数据
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值