变量、常量和函数等存储类型
2013-08-10 20:32
302 查看
标准C语言定影了4种存储类型:extern、auto、static和register.
一个程序元素的存储类型与它的作用域、生存期限及连接类型具有微妙的关系,但一个具有作用域和连接类型的标识符不一定有存储类型。
上述存储类型分为两种生存期限:永久的(即整个程序执行期间都存在)和临时的(即暂时保存在堆栈和寄存器中)。
extern和static用来标识永久生存期限的变量和函数;
auto和register用来标识临时生存期限的变量(注意,只有变量才具有临时生存期限)。
一个变量或函数只能具有一种存储类型,当然也只能有一种生存期限。
(1)全局变量和全局函数的存储类型默认是extern的,能够被定义在他们之后的同一个编译单元的函数所调用。如果变量和函数被显示的加上extern声明,那么其他编译单元中的函数也能调用他们。
(2)局部变量默认具有auto存储类型,除非用static或register来定义,但他们的作用域均是程序块作用域,连接类型都是内连接,在进入函数的时候创建,在函数退出的时候销毁。register和auto只能用于声明局部变量和局部常量。
(3)全局常量的默认存储类型为static,除非定义了它的编译单元之外的其它编译单元中显示地用extern声明,否则不能被访问。
(4)局部符号常量(注意,不是函数内出现的字面常量)的默认存储类型为auto,除非显示地定义为static或register.
(5)函数的形参是局部变量,因此一般局部变量存储类型相同,但是最好不要声明为static.
(6)用register修饰的变量会被直接加载到CPU寄存器中,如果寄存器足以容纳的下它的话,把那些常使用的变量,如循环计数器等直接放到cpu寄存器中,可以避免在寄存器和内存之间频繁地交换数据,因此能够提高程序的运行效率。
一个程序元素的存储类型与它的作用域、生存期限及连接类型具有微妙的关系,但一个具有作用域和连接类型的标识符不一定有存储类型。
上述存储类型分为两种生存期限:永久的(即整个程序执行期间都存在)和临时的(即暂时保存在堆栈和寄存器中)。
extern和static用来标识永久生存期限的变量和函数;
auto和register用来标识临时生存期限的变量(注意,只有变量才具有临时生存期限)。
一个变量或函数只能具有一种存储类型,当然也只能有一种生存期限。
(1)全局变量和全局函数的存储类型默认是extern的,能够被定义在他们之后的同一个编译单元的函数所调用。如果变量和函数被显示的加上extern声明,那么其他编译单元中的函数也能调用他们。
(2)局部变量默认具有auto存储类型,除非用static或register来定义,但他们的作用域均是程序块作用域,连接类型都是内连接,在进入函数的时候创建,在函数退出的时候销毁。register和auto只能用于声明局部变量和局部常量。
(3)全局常量的默认存储类型为static,除非定义了它的编译单元之外的其它编译单元中显示地用extern声明,否则不能被访问。
(4)局部符号常量(注意,不是函数内出现的字面常量)的默认存储类型为auto,除非显示地定义为static或register.
(5)函数的形参是局部变量,因此一般局部变量存储类型相同,但是最好不要声明为static.
(6)用register修饰的变量会被直接加载到CPU寄存器中,如果寄存器足以容纳的下它的话,把那些常使用的变量,如循环计数器等直接放到cpu寄存器中,可以避免在寄存器和内存之间频繁地交换数据,因此能够提高程序的运行效率。
相关文章推荐
- 如果从函数中返回局部变量的地址,引用或者指针的形式,则变量类型必须是静态的或者常量,即不在栈中存储
- C语言中的常量、变量及其属性,类型、存储空间
- 变量类型、存储方式、函数声明调用——记录
- C语言常量以及变量类型,存储类型和作用域
- 条件编译、Unix中C函数声明、变量存储类型、程序与进程
- 浅谈c语言的变量与函数存储类型
- C变量和函数的存储类型
- 作用域、链接属性、存储类型示例——文件之间变量、函数的关系
- C变量及函数存储类型
- C变量及函数存储类型
- DirectX 3D_基础之HLSL(高级着色语言) HLSL着色器程序的编制 HSLS变量 HLSL入口函数 HLSL程序编译 变量常量类型 设置方法 前缀 关键字 类型 语句 类型转换
- 1119数组 二维数组 字符串处理函数 值传递和变量存储类型知识点
- C语言基础:进制转换,变量,常量,表达式,基本数据类型,输出函数,输入函数,运算符. 分类: iOS学习 c语言基础 2015-06-10 21:39 25人阅读 评论(0) 收藏
- 常量和变量的存储类型
- 数据的存储与输入输出(数据类型,常量,变量)
- C语言基础:进制转换,变量,常量,表达式,基本数据类型,输出函数,输入函数,运算符.
- 不同存储类型的变量的声明、内部函数、外部函数
- C变量和函数的存储类型
- 关于javascript中变量是如何存储调用、以及函数的继承实现
- PHP 判断常量,变量和函数是否存在