变量的存储类型
来源:百度文库 编辑:神马文学网 时间:2024/04/29 08:54:34
4.5 变量的存储类型
引言
自动变量外部变量静态变量寄存器变量
1.引言
我们知道, 每一个变量都有一个类型。另外, 每一个变量都有一个存储类。变量的存储类是由它被定义的地方决定的, 并且, 如果用了关键字, 则还要由关键字决定。有四个关键字描述存储类: extern, auto, static 和 register。
存储类决定了两件事, 第一, 它控制哪些函数可以访问一个变量,第二, 存储类决定了变量在内存中的时间。
返回页首
2.自动变量
在一个函数中说明的变量, 其类型缺省为自动类的。然而, 你可以用关键字 auto 来清楚地表示:
main()
{
auto int plox;
....
一个自动类变量是局部范围的。仅仅定义此变量的函数知道此变量。其它函数可以有同一名字的变量, 但它们是独立的变量, 并且可能存储在不同的内存位置。
现在, 我们看一个例子:
',1)">
返回页首
3.外部变量
在一个函数外部定义的变量是外部的。一个外部变量也必须在用到它的函数中说明后才能使用; 这可以用extern显式地说明, 也可由上下文隐含地说明。一个外部变量在程序运行时都存在, 而不是限制在某个函数中。
说明如下:
/* 三个外部定义的变量 */
int errupt ;
char coal;
double up;
main()
{
/* 说明那三个外部定义的变量 */
extern int errupt;
extern char coal;
extern double up;
....
有两种情形, 你必须在使用一个外部变量之前先用关键字 extern 说明它 。
情形 1: 如果你在一个文件中, 要在一个外部变量的定义之前使用它, 那么你必须在用之前先用 extern 来说明它。看一个例子:
try()
{
extern int i; <--- i必须先用
i=i+5;
...
}
...
int i; <---i在后面定义
情形 2: 如果不在一个文件中,如 FILE1 和 FILE2 是两个不同的文件。我们想在 FILE1 用变量 i (它的类型是 int), 但它是在 FILE2 中定义的。我们必须在 FILE1 中说明 i : extern int i;
只要 extern 的说明的最初定义是在同一个文件中, 并且是在使用它的函数之前, 就可以忽略它。
这里有一个例子:
/* 定义一个外部变量 */
int hocus ;
main()
{
/*hocus 没有说明 */
hocus++ ;
/* hocus 是外部的尽管它在 main()函数中没有被显式的说明。*/
....
/* hocus 是 1auto 类型的 */
int hocus ;
...
返回页首
4.静态变量
在 C 语言中, 有一种特殊的变量: 静态变量。
你可以如下方式说明:
main()
{
...
static int i;
...
}
现在, 我们看一个例子:
',2)">
返回页首
5.寄存器变量
通常变量是存在计算机内存中的。幸运的话, 寄存器变量被存在 CPU 的寄存器中, 在寄存器中可以比在内存中更快地访问和操作变量。在其它方面, 寄存器变量和动态类变量几乎一样。
按这种方式设置寄存器变量:
main()
{
/* i是普通变量 */
int i;
/* j是寄存器变量 */
register int j;
.. .
如果得不到寄存器, 寄存器变量变成了普通的自动类变量。访问 j 比访问 i 快多了!
引言
自动变量外部变量静态变量寄存器变量
1.引言
我们知道, 每一个变量都有一个类型。另外, 每一个变量都有一个存储类。变量的存储类是由它被定义的地方决定的, 并且, 如果用了关键字, 则还要由关键字决定。有四个关键字描述存储类: extern, auto, static 和 register。
存储类决定了两件事, 第一, 它控制哪些函数可以访问一个变量,第二, 存储类决定了变量在内存中的时间。
返回页首
2.自动变量
在一个函数中说明的变量, 其类型缺省为自动类的。然而, 你可以用关键字 auto 来清楚地表示:
main()
{
auto int plox;
....
一个自动类变量是局部范围的。仅仅定义此变量的函数知道此变量。其它函数可以有同一名字的变量, 但它们是独立的变量, 并且可能存储在不同的内存位置。
现在, 我们看一个例子:
',1)">
返回页首
3.外部变量
在一个函数外部定义的变量是外部的。一个外部变量也必须在用到它的函数中说明后才能使用; 这可以用extern显式地说明, 也可由上下文隐含地说明。一个外部变量在程序运行时都存在, 而不是限制在某个函数中。
说明如下:
/* 三个外部定义的变量 */
int errupt ;
char coal;
double up;
main()
{
/* 说明那三个外部定义的变量 */
extern int errupt;
extern char coal;
extern double up;
....
有两种情形, 你必须在使用一个外部变量之前先用关键字 extern 说明它 。
情形 1: 如果你在一个文件中, 要在一个外部变量的定义之前使用它, 那么你必须在用之前先用 extern 来说明它。看一个例子:
try()
{
extern int i; <--- i必须先用
i=i+5;
...
}
...
int i; <---i在后面定义
情形 2: 如果不在一个文件中,如 FILE1 和 FILE2 是两个不同的文件。我们想在 FILE1 用变量 i (它的类型是 int), 但它是在 FILE2 中定义的。我们必须在 FILE1 中说明 i : extern int i;
只要 extern 的说明的最初定义是在同一个文件中, 并且是在使用它的函数之前, 就可以忽略它。
这里有一个例子:
/* 定义一个外部变量 */
int hocus ;
main()
{
/*hocus 没有说明 */
hocus++ ;
/* hocus 是外部的尽管它在 main()函数中没有被显式的说明。*/
....
/* hocus 是 1auto 类型的 */
int hocus ;
...
返回页首
4.静态变量
在 C 语言中, 有一种特殊的变量: 静态变量。
你可以如下方式说明:
main()
{
...
static int i;
...
}
现在, 我们看一个例子:
',2)">
返回页首
5.寄存器变量
通常变量是存在计算机内存中的。幸运的话, 寄存器变量被存在 CPU 的寄存器中, 在寄存器中可以比在内存中更快地访问和操作变量。在其它方面, 寄存器变量和动态类变量几乎一样。
按这种方式设置寄存器变量:
main()
{
/* i是普通变量 */
int i;
/* j是寄存器变量 */
register int j;
.. .
如果得不到寄存器, 寄存器变量变成了普通的自动类变量。访问 j 比访问 i 快多了!
变量的存储类型
C语言变量的存储类别
MySQL的表类型和存储引擎
MySQL的表类型和存储引擎
VB.NET 的新特点:变量,类型,数组,属性
VB.NET 的新特点:变量,类型,数组,属性
vc++ 变量的全部数据类型以及相关类型含义
指针类型和存储区的关系详解
vb.net2005中什么类型的变量与Delphi的StringList是相似的
作为“变量”的民意
变量的作用域
变量的区分
多维数组的指针变量
认知结构的三变量
多维数组的指针变量
影响儿童智力的九个变量
影响儿童智力的九个变量
影响儿童智力的九个变量
影响儿童智力的九个变量
技术文章-使用OpenJPA持久存储服务数据对象:放宽类型
蔬菜的存储
我的网络存储
变量的声明与赋值!表达式
2010,转型中国的时代变量