background image

4、变量的存储类型。

前面我们说了,声明变量时用了如下格式:
Int,num;float;total;
他们只是声明了数据的类型,并没有声明数据的存储类型修饰符。我们在

声明的时候通过存储类型修饰符来告诉编译器将要处理什么类型变量。存储器
的类型有一下四种:

自动存储类型(auto)、静态(static)、外部(extern)、寄存器(register).

4.1、自动存储类型(auto)

自动存储类型修饰符指定了一个局部变量为自动的,这意味着,每次执行

到定义该变量的语句块时,都将会为该变量在内存中产生一个新的拷贝,并
对其进行初始化,实际上,如果不特别指明,局部变量的存储类型就默认为
自动的。

main()

{

auto int num=5;
pintf(“%d\n”,num);

}

在例子中,不论变量 num 的声明是否包含关键字 auto,代码的执行效果都

是一样的,函数的形式参数的存储类型默认也是自动的。

4.2 静态存储变量。前面已经使用了 static 关键字,但是对于局部变量,

静态存储类型的意义是不一样的,这时候,它和自动存储类型相对而言的,
静态局部的变量作用域仍然是局限于声明它的语句块,但是在语句块执行期
间,变量将始终保持它的值。而且初始化只是在语句块上执行一次,在随后的
运行中,变量将保持语句块上一次执行的值,源代码如下:

1.c
int  add();
main()

{

int result; result=add(); printf(“%d”,result);
result=add();printf(“%d”,result);
result=add();printf(“%d”,result);

}
int add()

{

int num=50; num++; return result;

}

2.c

int add();
main()

{

int result; result=add(); printf(“%d”,result);
result=add();printf(“%d”,result);
result=add();printf(“%d”,result);}