C++ 变量存储类别 解析
2012-04-05 21:38
267 查看
动态存储方式与静态存储方式;
变量的属性作用域在空间的角度来分析,分为局部变量和全局变量
变量还有一种属性存储期(生命期)
这个属性可以分为{
动态存储期
静态存储期
}
这个分为是由变量的静态存储方式和动态存储方式决定的
存储空间可以分为三部分;
程序区
静态存储区
动态存储区
全局变量放在静态存储区
程序开始时,分配存储单元,结束时释放空间
程序执行时他们占据固定的存储单元,不是动态分配的
动态存储区放的是:函数形参,函数中的自动变量,函数调用时的现场保护和返回地址;
1、自动变量;
如果不是用static关键字加以声明,编译器会动态的分配存储空间
在函数结束是会释放这些空间
因此局部变量称为自动变量
自动变量用auto作存储类别的声明
默认都是自动变量
2、用static声明静态局部变量
在函数调用结束后不消失而保留原值,其占用的存储单元也不释放
在下次调用时该变量保留上一次函数调用结束时的值
附上一个小例子:
3、用register声明寄存器变量;
一般的变量都是存储在内存中的,在程序需要的时候,就把变量从内存中读取到运算器中,加入有个别的变量需要重复的用到,那么在读取内存变量的过程中就花费了大量的时间,所以可以通过register声明寄存器变量在运算器中,以提高运算速度;
4、用extern声明外部变量
全局变量(外部变量)
是在函数的外部定义的,作用域是从变量定义处开始到文件末尾。
但是如果你额外部变量不是在文件的开头定义,那么他的有效范围只限于文件定义处到文件末尾;
estern int a, a 是一个已经在别处定义的变量;
5、用static声明只限于本文件使用的外部变量
加入两个文件中都有number变量
file1中用static定义
file2即使用了extern也不能引用file1中的number变量
综上所述:
C++中允许四种存储类别
auto //字符型自动变量,在函数内定义
static //静态局部整形变量或静态外部整形变量
register //整形寄存器变量,在函数内定义
extern //声明一个已经定义的外部整形变量
变量的属性作用域在空间的角度来分析,分为局部变量和全局变量
变量还有一种属性存储期(生命期)
这个属性可以分为{
动态存储期
静态存储期
}
这个分为是由变量的静态存储方式和动态存储方式决定的
存储空间可以分为三部分;
程序区
静态存储区
动态存储区
全局变量放在静态存储区
程序开始时,分配存储单元,结束时释放空间
程序执行时他们占据固定的存储单元,不是动态分配的
动态存储区放的是:函数形参,函数中的自动变量,函数调用时的现场保护和返回地址;
1、自动变量;
如果不是用static关键字加以声明,编译器会动态的分配存储空间
在函数结束是会释放这些空间
因此局部变量称为自动变量
自动变量用auto作存储类别的声明
默认都是自动变量
2、用static声明静态局部变量
在函数调用结束后不消失而保留原值,其占用的存储单元也不释放
在下次调用时该变量保留上一次函数调用结束时的值
附上一个小例子:
#include <iostream> using namespace std; int f(int a) { auto int b = 0; static int c = 3; b = b+1; c = c+1; return a+b+c; } int main (int argc, const char * argv[]) { int a = 2; for(int i=0;i<5;i++) cout<<f(a)<<"\n"; return 0; }
3、用register声明寄存器变量;
一般的变量都是存储在内存中的,在程序需要的时候,就把变量从内存中读取到运算器中,加入有个别的变量需要重复的用到,那么在读取内存变量的过程中就花费了大量的时间,所以可以通过register声明寄存器变量在运算器中,以提高运算速度;
4、用extern声明外部变量
全局变量(外部变量)
是在函数的外部定义的,作用域是从变量定义处开始到文件末尾。
但是如果你额外部变量不是在文件的开头定义,那么他的有效范围只限于文件定义处到文件末尾;
estern int a, a 是一个已经在别处定义的变量;
5、用static声明只限于本文件使用的外部变量
加入两个文件中都有number变量
file1中用static定义
file2即使用了extern也不能引用file1中的number变量
综上所述:
C++中允许四种存储类别
auto //字符型自动变量,在函数内定义
static //静态局部整形变量或静态外部整形变量
register //整形寄存器变量,在函数内定义
extern //声明一个已经定义的外部整形变量
相关文章推荐
- c++学习之变量的存储类别
- 深入理解C++中变量的存储类别和属性
- C++之内置函数、函数模板、变量的存储类别、类、析构函数、指针
- C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量、extern、static) 总结
- 深入理解C++中变量的存储类别和属性
- C++变量的存储类别与作用域
- C++变量的存储类别
- [C++]变量存储类别,指针和引用,类与对象,继承与派生的一些摘要
- C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量、外部变量)
- [C++程序设计]变量的存储类别
- C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量)
- c/c++ 中变量的存储类别
- C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量、外部变量)
- C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量、
- 深入理解C++中变量的存储类别和属性
- C++学习 【4.5】 利用函数实现指定的功能---局部变量、全局变量、变量的存储类别、声明和定义
- C/C++中的变量存储类别以及内存分配
- C/C++中的变量存储类别以及内存分配
- C++中变量的存储类别和属性
- C/C++中的变量存储类别以及内存分配