变量的存储类有5种:自动变量,寄存器变量,外部链接静态变量,内部链接静态变量,空链接静态变量。
作用域:代码块作用域,函数原型作用域,文件作用域
存储时期:静态存储时期,自动存储时期
存储类说明符:auto,register,static,extern,typedef
一种声明只能使用一种说明符
以上是一些基本分类,c语言中,变量有以上的多种特性。
1.自动变量,关键字auto,可省略
代码块作用域,空链接
如
{
int m=5;
}
当内层代码变量和外层代码变量名一致是,在内层代码块以内层为主。
2.寄存器变量,关键字register
代码块作用域,空链接
如 register int quick;
是一个请求,如果没有空余寄存器,也放到自动变量的存储空间,但是不能获取地址。
3.代码块中的静态变量,关键字static
代码块作用域,空链接
如
void try()
{
static int stay=1;
}
虽然作用域只在此代码块,静态特性,每次函数结束内存保存,下来进函数继续使用,形参中不能用。
4.外部链接的静态变量
文件作用域,外部链接
如
int x=10;
void main()
{
}
又称外部变量,可用于其他文件,其他文件用使用关键字extern二次声明,告诉编译器在其他地方声明过这个变量。
5.内部链接的静态变量
static int x=10;
void main()
{
}
文件作用域,内部链接
和外部变量区别在于只能在本文件中使用