博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言的6种存储模型
阅读量:4112 次
发布时间:2019-05-25

本文共 1499 字,大约阅读时间需要 4 分钟。

C语言的6种存储模型

 

C语言提供了包括基于指针的存储模型和自动、寄存器、静态&空链接、静态&外部链接、静态&内部链接在内的6种存储模型。与存储期(storage duration)、作用域(scope)、链接(linkage)的不同组合与不同的存储模型紧密相关。

存储期(storageduration)就是变量可在内存中存在的时间。而作用域(scope)和链接(linkage)则能够限定变量的使用范围。

作用域(scope)具体来说就是程序中可以访问一个变量标识符的一个乃至多个区域。C语言中拥有包括代码块作用域(block scope)、函数原型作用域(function prototype scope)、文件作用域(file scope){全局变量(global variable)具有文件作用域属性}在内的多种作用域类型。

链接(linkage)包括外部链接(external linkage)、内部链接(internal linkage)、空链接(no linkage)。具有外部链接(external linkage)属性的变量可以被工程内的全部文件识别。具有内部链接(internal linkage)的变量能被本文件识别。具有空链接(no linkage)属性的变量可以在本代码块内识别。

存储期(storageduration)分为静态存储期(static storage duration)和自动存储期(auto matic storage duration)。

自动存储模型的变量具有自动存储期(auto matic storage duration)、代码块作用域(blockscope)、空链接(no linkage),使用存储类型说明符 auto 加以标识。

寄存器存储模型与自动存储模型一样具有自动存储期(auto matic storage duration)、代码块作用域(blockscope)、空链接(no linkage),但还需要使用存储类型说明符 register加以声明。

静态&空链接存储模型具有静态存储期(static storage duration)和代码块作用域(block scope)、空链接(no linkage)属性。例如静态变量(static variable)就是具有静态&空链接。

静态&外部链接存储模型具有文件作用域(file scope)、外部链接(external linkage)、静态存储期(static storage duration)。具有静态&外部链接属性的变量被称之为外部变量(external variable),需要使用关键字 extern 加以标识。

静态&内部链接存储模型具有静态存储期(static storage duration)、文件作用域(file scope)、内部链接(internal linkage)。需要使用存储类型说明符 static 加以标识。

和前面的5种服从预先定义的内存管理规则的存储模型不同,基于指针的存储模型给编程人员带来了极大的灵活性。内存分配函数 malloc()和与之相对应的 free(),是分配和管理内存的有力工具。这里值得注意的一个小细节是malloc()函数的返回类型,它的返回类型是被称之为“通用指针类型”的指向void的指针类型,所以显式的进行类型指派是有必要且可行的。

最后穿插一个编程小技巧,如果在编程中变量需要被多个文件共同使用,好的处理方法是将它们统一在一个单独的源文件中定义,并且将其定义为静态&外部链接存储模型的变量。这样有利于管理。

转载地址:http://smmsi.baihongyu.com/

你可能感兴趣的文章
常用js收集
查看>>
mydata97的日期控件
查看>>
如何防止sql注入
查看>>
maven多工程构建与打包
查看>>
springmvc传值
查看>>
Java 集合学习一 HashSet
查看>>
在Eclipse中查看Android源码
查看>>
Android-Socket登录实例
查看>>
Android使用webservice客户端实例
查看>>
层在页面中的定位
查看>>
[转]C语言printf
查看>>
C 语言 学习---获取文本框内容及字符串拼接
查看>>
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---判断文本框取得的数是否是整数
查看>>
C 语言 学习---ComboBox相关、简单计算器
查看>>
C 语言 学习---ComboBox相关、简易“假”管理系统
查看>>
C 语言 学习---回调、时间定时更新程序
查看>>
C 语言 学习---复选框及列表框的使用
查看>>
第四章 - 程序计数器
查看>>
第七章 - 本地方法栈
查看>>