当前位置:文档之家› C语言变量存储类型

C语言变量存储类型

1.存储类型和数据类型。

存储类型是针对变量而言的,它规定了变量的存储位置,从而也确认了其作用域和生存期;数据类型也可以针对变量,它规定了变量所占内存空间的大小。

2.C中只有两种存储类型:自动类和静态类。

全局变量只能是静态类,而局部变量可以任意。

3.说明变量存储类型的格式:<存储类型> <数据类型> <变量名表>;(存储/数据类型可以交换次序),与存储类别有关的说明符:auto(自动),static(静态),register(寄存器),extern (外部)。

4.计算机内存分三部分:动态存储区(堆栈)、静态存储区、程序代码区。

动态存储区用来保存函数调用时的返回地址、自动类别的局部变量等;静态存储区用以存放全局变量及静态类别的局部变量;程序代码区存放各类代码。

5.C++中,可以用static说明"静态函数",其不允许嵌套定义,也不允许外部编译单元中的函数对它进行调用。

******************************************************************************/ #include<stdio.h>
/******************************************************************************
1.对于全局变量可以使用extern和static两种说明符。

2.全局变量的定义只能出现一次,在定义全局变量时,不可使用extern说明符。

3.全局变量的说明(使用extern)可多次出现在需要的地方,说明的作用是扩展该全局变量的作用域,可以对同一变量进行多次extern声明。

4.全局变量的生存期是整个程序的运行时间。

5.全局变量可以进行不同函数之间的传值。

******************************************************************************/ int i=10; //注意:extern int i=10;是一个具体变量的定义,不是外部变量的声明
int main()
{
/****************************************************************************** 1.static局部变量只有在第一次执行时才进行初始化,若定义时没有指定初值,编译器自动为其赋0。

2.static变量的初值是在编译时赋予的,而auto量的初值是在程序执行过程中赋予的。

3.static局部变量的生存期是整个程序的运行时间。

******************************************************************************/
static int i=20;
{
/******************************************************************************
1.auto只能用于局部变量的声明,其存储在栈区中。

2.auto局部变量不能保存函数值,当程序执行超出其作用域时,其所占用的内存空间就会被释放。

3.auto局部变量每次进入作用域都要重新分配存储单元。

若通过定义语句为auto变量赋初值,那么每进入一次作用域,就为其赋一次初值。

4.进行初始化,若定义时没有指定初值,编译器自动为其赋0,auto局部变量的初值是在程序执行过程中赋予的。

5.auto局部变量可以在各函数之间造成信息隔离,因此允许不同函数中可以使用同名变量,而不会相互影响。

int i=5,j=0;
::i+=4;
j=::i+i;
printf("::i=%d,j=%d\n",::i,j);
}
printf("::i=%d,i=%d\n",::i,i);
return 0;
}
/****************************************************************************** 1.register变量也是自动类变量,它与auto变量的区别仅在于:register说明的变量建议编译程序将变量的值放入CPU的寄存器内,从而加快程序的运行速度。

2.由于CPU寄存器等的限制,registe声明的变量不一定存放在寄存器中,若没放入将自动按auto变量来处理。

2.register变量存放在寄存器内,因此register变量没地址,不能对其进行求地址运算。

3.register变量的说明应尽量靠近其使用的地方,用完之后尽快释放,以便提高寄存器的利用效率。

******************************************************************************/。

相关主题