C语言中的变量存储知识

来源:互联网 发布:画原型的软件 编辑:程序博客网 时间:2024/05/01 12:28

个人计算机的三大重要组成部分:

1、  CPU;

2、  内存;(共享设备、稀缺资源)

3、  硬盘;

 

内存与硬盘的区别:

表述方法一:内存是动态存储数据的,当设备断点后所有数据消失;硬盘静态存储数据,当设备断电后数据依然原样保留;

表述方法二:程序在不运行时存放在硬盘中,当程序运行时,程序会被调到内存中,此时程序变化为进程;

 

 

变量的特性

1、  变量的类型;

2、  变量的作用域;

3、  变量的存储区域;

 

操作系统作用:管理资源;

 

两个名词:物理内存、抽象内存

对应:虚拟地址空间、物理地址空间;

虚拟地址空间→MMU→物理地址空间

 

 

假设4GB的内存:

1、最顶层1GB内存,计算机分配给内核;

2、下方3GB内存为用户空间;

   1)     栈空间;(1、先进后出;2、由系统管理;)

                   局部变量、函数形参、自动变量

   2)     堆空间;(1、后进先出;2、由用户管理;)

                   malloc、calloc、ralloc

   3)     数据区;

                   *1、DBSS:未初始化的全局变量;

                   *2、OR(only read):常量;

                   *3、静态数据区:static修饰的变量、初始化的全局变量;

   4)     代码段;

                   保存代码;

 

分配内存的三种方式:栈空间、堆空间、数据区;

 

全局变量、局部变量重名时局部变量在起作用;

 

栈空间所有数据的生命周期:函数调用到函数结束,函数结束后释放所有空间;

数据区所有数据的生命周期:从程序头到程序尾,整个程序结束后释放所有空间;

 

栈空间中保存的局部变量未初始化时,其值为一个不可预料的垃圾值;

数据区中保存的全局变量未初始化时,其值系统默认为0;

 

1 0