浅谈程序数据在执行时的变化
来源:互联网 发布:外汇投资收益率知乎 编辑:程序博客网 时间:2024/06/06 01:31
一、综述:
程序数据在执行时的变化,可用:存储期、作用域和链接来表示。
二、存储期:
存储期可以是静态的、自动的、或者分配的。
1、如果是静态的,内存在程序开始执行时被分配,并在程序运行的过程中一直存在。
2、如果是自动的,变量所用内存在程序执行到该变量定义所在代码块时开始分配,在退出代码块时释放。
3、如果是分配的内存,内存通过调用malloc()或calloc()函数分配,通过调用函数free()释放。
三、作用域:
作用域决定了哪一部分程序可以访问某个数据。
1、在所有函数之外定义的变量具有文件作用域,并对该变量声明之后定义的全部函数可见。
2、在代码块内定义或者作为函数参量定义的变量具有代码块作用域,并只在该代码块及其子代码块中可见。
四、链接属性:
链接描述了程序的某个单元定义的变量可被链接到哪些地方。
1、具有代码块作用域的变量作为局部变量,具有空链接。
2、具有文件作用域的变量可有内部链接或外部链接
1)内部链接意味着变量只能在包含变量定义的文件内部使用。
2)外部链接意味着变量可以在其他文件中使用。
五、存储类:
1、自动——在代码块内(或在一个函数头部作为参量),无论有没有存储类修饰符auto,都属于自动存储类。该类具有自动存储时期、代码块作用域和空链接。如未经初始化,它的值是不定的(随机值)。
2、寄存器——在代码块内(或在一个函数头部作为参量)使用存储类修饰符register声明的变量属于寄存器存储类。该类具有自动存储时期、代码块作用域和空链接,并且无法获得它的地址。
3、静态、空链接——在一个代码块内使用存储类修饰符static声明的变量属于静态空链接存储类。该类具有静态存储时期、代码块作用域和空链接,仅在编译时初始化一次。如未明确初始化,它的字节都被设定为0。
4、静态、外部链接——在所有函数外部定义、未使用存储类修饰符static的变量属于静态、外部链接存储类。该类具有静态存储时期、文件作用域和外部链接,仅在编译时初始化一次。如未明确初始化,它的字节都被设定为0。
5、静态、内部链接——在所有函数外部定义、使用存储类修饰符static的变量属于静态、外部链接存储类。该类具有静态存储期、文件作用域和内部链接,仅在编译时初始化一次。如未明确初始化,它的字节都被设定为0。
6、分配内存——使用函数malloc()(或相关的函数)提供的内存,该函数返回一个指向具有具有所请求字节数的内存块的指针。将这内存块的地址作为参数来调用函数free(),可以是该内存块重新可用。
六、类型限定词:
类型限定词说明符有const、volatile和restrict。
1、说明符const将数据限定为不变的。在使用指针时,const可以表明指针本身不变或指针指向的数据不变,这取决于const在声明中的位置。
2、说明符volatile表明数据除了可被程序修改外还可通过其他地方修改,其目的是警示编译器在优化时不要做出相反的假设。
3、说明符restrict也是为了优化而设置。由restrict限定的指针被认为是提供了对其所指向的数据块的唯一访问途径。
- 浅谈程序数据在执行时的变化
- 通过JMS监听Oracle AQ,在数据库变化时触发执行Java程序
- 程序执行时,栈指针ESP和栈顶指针EBP的变化
- 方法执行时内存的变化
- 浅谈DiscuzNT的数据层提供程序
- 处理程序关键数据变化的一种软件设计
- 浅谈——程序执行和函数的调用
- 浅谈测量javascript脚本程序执行消耗的时间
- 函数的入参使用数据类, 在需求变化时, 提高工程的维护效率
- 函数调用时程序堆栈的变化
- 获得一个程序在执行时的路径
- Android ListView避免在GetView时数据发生变化导致找不到元素的Bug
- 带有头布局的ListView在数据集变化时如何刷新
- c#在最小化为托盘时,无法监听剪切板(clipboard)复制数据时候的变化
- Long数据作为方法参数在递归调用的变化
- 在main的前后执行程序
- c 程序在android下的执行
- swift在通知时的变化
- world2016论文怎么删除带页眉格式的那个空白页
- SVN:Fully recursive、Working copy和Immediate children...区别
- spark concat_ws,collect_set
- 在Android中使用Realm作本地存储
- 【简记】大规模Web开发技术(第十三章)
- 浅谈程序数据在执行时的变化
- Android布局动画
- echarts
- 刷清橙OJ--A1038.超级重复串
- 润乾报表单独部署url安全之加解密函数
- 程序员面试金典——奇偶位交换__(位运算)
- BZOJ 4653: [Noi2016]区间 线段树
- 翻转单词顺序
- 初识多线程 (其二)