第十三章 变量存储类型与多文件系统

更新时间:2023-07-22 17:27:02 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第十三章 变量存储类型与多 文件系统

第十三章 变量存储类型与多文件系统变量的存储类型 定义变量存储类型的语句格式如下: 存储类型符 数据类型符 变量名1,变量名2,…; 变量名1,变量名2,… 存储类型有auto(自动),register(寄存 存储类型有auto(自动),register(寄存 器),static(静态)和extern(外部参照)。 ),static(静态) extern(外部参照)

第十三章 变量存储类型与多文件系统变量的存储类型 存储类型符表存储类型 自动型 寄存器型 静态型 外部参照型 存储类型符 auto register static extern 存储地点 内存堆栈区 CPU的通用寄存器 CPU的通用寄存器 内存数据区 内存静态存储区

第十三章 变量存储类型与多文件系统变量的存储类型 1.自动型auto 1.自动型auto 自动型又称堆栈型。自动型变量是分配在内存的堆 栈区。堆栈区内存在程序运行中是重复使用的。当 在某个函数中定义了自动型变量,C 在某个函数中定义了自动型变量,C语言就在堆栈 区中给该变量分配字节,用于存放该变量的值。当 退出该函数时,C 退出该函数时,C语言就释放该变量,即从堆栈区 中收回分配给该变量的字节,以便重新分配给其他 自动型变量,这样做的目的是为了节约内存。 通常省略存储类型符auto,以前所涉及的大多是自 通常省略存储类型符auto,以前所涉及的大多是自 动变量。

第十三章 变量存储类型与多文件系统变量的存储类型 2.寄存器型register 2.寄存器型register register修饰符暗示编译程序相应的变量将被频繁地 register修饰符暗示编译程序相应的变量将被频繁地 使用,如果可能的话,应将其保存在CPU的寄存器中, 使用,如果可能的话,应将其保存在CPU的寄存器中, 以加快其存储速度。

第十三章 变量存储类型与多文件系统变量的存储类型 使用register修饰符有几点限制。 使用register修饰符有几点限制。 首先,register变量必须是能被CPU所接受的类型。 首先,register变量必须是能被CPU所接受的类型。 这通常意味着register变量必须是一个单个的值,并 这通常意味着register变量必须是一个单个的值,并 且长度应该小于或者等于整型的长度。不过,有些机 器的寄存器也能存放浮点数。 其次,因为register变量可能不存放在内存中,所以 其次,因为register变量可能不存放在内存中,所以 不能用“ 来获取register变量的地址。 不能用“&”来获取register变量的地址。

第十三章 变量存储类型与多文件系统变量的存储类型 由于寄存器的数量有限,而且某些寄存器只能接受特 定类型的数据(如指针和浮点数),因此真正起作用 的register修饰符的数目和类型都依赖于运行程序的 register修饰符的数目

和类型都依赖于运行程序的 机器,而任何多余的register修饰符都将被编译程序 机器,而任何多余的register修饰符都将被编译程序 所忽略。 在某些情况下,把变量保存在寄存器中反而 会降低程序的运行速度。因为被占用的寄存器不能再 用于其它目的;或者变量被使用的次数不够多,不足 以装入和存储变量所带来的额外开销。

第十三章 变量存储类型与多文件系统变量的存储类型 3.静态型 static 3.静态型 静态型变量是分配在内存的数据区中,它们在程序开 始运行时就分配了固定的字节,在程序运行过程中不 释放。只有程序运行结束后,才释放所占用的内存。

第十三章 变量存储类型与多文件系统变量的存储类型 4.外部参照型 extern 4.外部参照型 C语言允许将一个源程序清单分别放在若干个程序文 件中,采用分块编译方法编译生成一个目标程序。其 中每个程序文件称为一个“编译单位” 中每个程序文件称为一个“编译单位”。 外部参照型变量是专门用于多个编译单位之间传递数 据用的。

本文来源:https://www.bwwdw.com/article/zqzm.html

Top