c的变量为6种不同的储存模型,或称存储类。
1:自动变量
2:寄存器变量
3:具有代码块作用域的静态变量
4:(文件作用域)
具有外部链接的 静态变量
具有内部链接的静态变量
6: 结构体
1.存储时期就是变量在内存中保留时间,
2.一个c变量的作用域为
代码块作用域(block scope),
函数原型作用域,
文件作用域。
a.代码块作用域:
例如:全局变量,局部变量
0 #include<stdio.h>
1 void Mouse(int m,int n,int p);
2 int a=2;
3 int main(int argc,char const* argv[])
4 {
5 int a=2;
6 printf("a=%d",a);
7 }
8
9 void Mouse(int m,int n,int p){
10
11 }
第二行的a为全局变量,拥有文件作用域(file scope),
(一个在所有函数之外定义的变量),具有文件作用域
的变量从他定义处到包扩该定义的文件结尾处都可见。
第五行的a为局部变量,
输出:a=5
第九行为函数原型作用域(function prototype scope);
适用于函数原型中使用的变量
3.链接:
一个c变量的链接有:
外部链接
内部链接
空链接
a:具有文件作用域的变量可有
外部链接或内部链接
(一个具有外部链接的变量可以在多文件程序的任何地方使用
一个具有内部链接的变量可在一个文件的任何地方使用)
例如:
int g;//g是外部链接
static int a;//a是内部链接
int main(int argc,char const* argv[])
{...........(此处省去一万字)
return 0;
}
b:具有代码块作用域或函数原型作用域的变量有空链接
(这代表他们是所定义的代码块或函数原型所私有的)