进程映像以及类型限定符

进程印象

进程映像指的就是函数的分布情况
# 堆heap
由程序员手动管理 特点就是够大
栈stack
函数调用开始到函数执行结束
只能在函数内使用
存储局部变量,块变量等数据
大小有限,超过限制会产生段错误
静态数据段bss
存储未初始化过的全局变量,静态变量
运行时会先被清理为0,全局变量,静态变量默认为0.
text代码段
存储是二进制指令,常量数据,权限是只读,强制修改会产生段错误。
data数据段
存储初始化的全局变量,静态变量

类型限定符

auto
用于定义自动分配、释放内存的变量(局部变量),不加就代表加。
全局变量不能用它修饰。
extern
声明变量,意思是此变量在别处已经定义,请放心使用。
但只临时满过编译时间,链时如果找不到依然会报错。
volatile
如果变量值没有显式的修改,在使用这个变量时不从内存中读取,而继续使用上次读取的结果。
变量被volatile修饰后,每次使用到这个变量时,都会从内存中读取。
一般硬件编程时或多线程编程时使用。
register
申请把变量的存储介质由内存改为寄存器,但由于寄存器有限不一定百分百成功。
注意:寄存器变量不取地址。

static
1.改变储存位置:
改变局部变量的储存位置,由stack改到bss或者data(取决于变量是否初始化)。
2.延长生命周期:
延长局部变量的生命周期。
3.限制作用域:
限制全局变量,只能在本文件内使用
可以和全局变量、函数命名冲突,也可以防止被别人调用。

const
"保护"变量不被显式修改。
但是,如果补初始化过的全局变量、静态局部变量被const修饰,存储位置就会变成text。

typedef
类型重定义,定义变量时如果前面加上typedef变量名就变了这种类型(注意不是替换关系)。
typedef int num和 #define num int的区别
typedef int num:num直接成为了数据类型
#define num int :在文件预处理的时候对num进行操作,令num=int,其实最底层的还是对int进行操作。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值