学习C的知识点七--硬件

1 内存(RAM)

a) 掉电则数据丢失
b) 读取速度很快
c) 随机访问: 申请内存的时候随机申请内存空间;访问内存的时候,直接访问。

2 硬盘(ROM)

a) 掉电数据不会丢失
b) 访问速度慢于内存
c) 模块化访问

3 内存空间的分类

a) 栈内存空间:
  1. Linux系统栈空间默认大小 10M (我们的Ubuntu默认的栈空间大小大概在 2M 左右),
  2. 栈内存空间都是先进后出的。
  3. 栈内存中保存的变量都叫自动变量,自动变量的特点,申明时,自动申请内存空间,结束时自动释放内存空间。(申请空间代表用户向系统申请一片内存空间的使用权限。释放空间代表系统回收了该内存空间的使用权限。)
  4. 绝大多数的栈内存都是从高地址向低地址生长,这就是意味着先申请的数据,会存放在高地址,后申请的会在低地址。无论是向你低地址生长,还是向高地址生长,系统都会满足用户的一般逻辑思维。就是说,在申请某些数据结构的时候(可以存放复数数据的结构),写在前面的数据总归在低地址。

注意:

  1. 根据栈特性,我们可以认为自动变量就是局部变量。
  2. 严禁在函数内部返回一个局部变量的地址。 局部变量属于函数内部,不属于main函数,当函数调用完毕,局部变量被系统回收,该地址使用权不属于用户,而主函数内部却可以通过地址的方式直接访问到该地址,这就变成了一个非法操作。所以系统会提示警告。在编程过程中,需要尽量避免出现这种情况。
  3. 针对以上情况,存在着一种情况,可以向外返回一个局部变量的地址,并且运行不报错。那就是栈内存入侵。
b) 堆内存空间

堆内存空间上的数据都是由用户手动申请空间,并且手动释放。(只要申请了不释放,那么在哪里申请,怎么返回都是合法的。)
调用函数时,在函数中定义的变量是在堆内存中

c) 静态存储区

静态存储区中,存放了静态变量,静态存储区存在于整个程序的运行过程之中。
static关键字,能够修饰局部变量和全局变量,
static修饰局部变量的时候,会将该变量存储到静态存储区内去。达到延长生命周期的效果。

注意:
static仅仅延长了变量的生命周期,并没有扩展变量的作用域。
extern:可以引用外部全局变量
static修饰全局变量的时候:限制作用域,此时这个全局变量的作用域被限制在当前文件内。

d) 常量存储区

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值