在C语言中,每一个变量和函数都有两个属性:数据类型和数据存储类型;
数据类型:int 、long、short、char、float、double,以及对应的指针类型;
数据的存储类型:
可以划分两大类型:静态存储类型和动态存储类型;
具体包括:自动的(auto)、静态的(static)、外部的(extern)、和寄存器的(register)
自动变量在函数中定义的局部变量,如果没有进行专门的说明,对它们的存储空间的分配和释放工作,均有操作系统自动处理,这类局部变量称为自动变量。自动变量用关键词 auto 作为存储类型。定义的数据在栈区。
静态变量静态变量声明:
static 类型 变量名列表;
例如: static int a,b,c;
声明 a、b、c为静态存储类型的变量。
静态变量又可以划分为静态局部变量和静态全局变量。定义的数据存储在内存的静态区。
寄存器变量寄存器存储类型:将相关变量的值存储在CPU的通用寄存器中;
由于计算机的运算器和通用寄存器均集成在CPU的内部,因此,数据读写时间比内存块的多,一般快一个数量级以上;
但CPU内部的寄存器优先,不可能定义太多寄存器变量。一般定义几个循环变量;
当寄存器用完,定义成寄存器存储类型的变量会自动转变成普通变量。
寄存器变量的定义方式:
register 类型 变量列表;
例如: register int i,j,k;
定义了 i、j、k三个整型的寄存器变量。
外部变量外部变量声明格式:
extern 类型 变量列表;
例如: extern float x、y;
C语言允许一个程序分成若干个文件,也就是一个程序写在几个文件中,每一个文件可以单独编译成二进制代码文件(目标文件);
然后在连接时把它们拼成一个可执行程序。
外部变量有:同一文件的外部变量、不同文件的外部变量。
同一文件的外部变量:
C语言要求 ”先声明、后引用“;
也就是所以变量在引用之前必须已经声明;如果在一个文件内,声明在后,则需要在引用之前声明为外部变量。



