目录
1,局部变量
1,auto
2,static
2,全局变量的储存类型
3,register
4,extern
作用:
1,局部变量
#include <stdio.h>
int main()
{
int fAuto(int a);
int fStatic(int a); //函数声明
int a = 1, i; //自动局部变量
for (i = 0; i < 3; i++)
{
printf("auto:%d\n", fAuto(a));
printf("static:%d\n", fStatic(a));
}//输出3次f(a)的值
return 0;
}
int fAuto(int a)
{
int b = 1; //自动局部变量
b = b + 1;
return(a + b);
}
int fStatic(int a)
{
static int c = 1; //静态局部变量
c = c + 1;
return(a + c);
}
1,auto
自动变量(默认)
——在函数调用结束后自动释放
2,static
静态变量(在全局变量中定义可以避免外部文件调用
变量是否赋值?调用值:初始化;
2,全局变量的储存类型
3,register
寄存器(暂时不展开
单片机使用
4,extern
先在本文件中找外部变量的定义,如果找到,就在本文件中扩展作用域;
如果找不到,就在连接时从其他文件中找外部变量的定义。如果从其他文件中找到了,就将作用域扩展到本文件;
如果再找不到,就按出错处理。
作用:
将外部变量引用之函数内部
#include <stdio.h>
int main()
{ int max();
extern int A,B,C; //把外部变量A,B,C的作用域扩展到从此处开始
printf("Please enter three integer numbers:");
scanf("%d %d %d",&A,&B,&C); //输入3个整数给A,B,C
printf("max is %d\n",max());
return 0;
}
int A,B,C; //定义外部变量A,B,C
int max()
{ int m;
m=A>B?A:B; //把A和B中的大者放在m中
if(C>m) m=C; //将A,B,C三者中的大者放在m中
return(m); //返回m的值
}
1,提倡将外部变量的定义放在引用它的所有函数之前,这样可以避免在函数中多加一个extern声明。
2,引用不必再次声明(省略int)
3,可以跨文件引用