变量的存储类别

静态存储区 & 动态存储

auto  static  register extern

auto int b, c=3;
int b, c=3;
两者等价
f(int a)
{
atuo b = 0;
static c = 3;
b = b + 1;
c = c + 1;
return(a + b + c);
}
main()
{
int a = 2, i;
for(i = 0; i < 3; i++)
printf("%d",f(a));
}
运行结果:
7 8 9

static c = 3会在内存中不断叠加,而其他的类型会重新归位计算


一些变量频繁使用,存取变量需要花费不少时间。为提高执行效率,C语言允许将局部变量的值存放在CPU中的寄存器中

int fac(int n)
{
   register int i, f = 1;
   for(int i = 1; i <= n; i ++)
       f = f * i;
   return f;
}
main()
{
   int i;
   for(int i = 1; i <= 5; i++)
      printf("%d != %d\n", i, fac(i));
}
不能把变量既放在静态存储区,又放在寄存器中,二者只能居其一

外部变量(既全局变量)是在函数的外部定义,它的作用域为从变量的定义处开始,到本程序文件的末尾

int max(int x, int y)
{
   int z;
   z = x > y ? x : y;
   return (z);
}
main()
{
   extern A,B;
   printf("%d",max(A,B));
}
int A = 13, B = -8;

运行结果:
13


使用auto register static声明变量时,是在定义变量的基础上加上这些关键字,而不能单独使用


内部函数 & 外部函数:

此函数只能被本文件中的其他函数所调用,它称为内部函数

static int fun(int a, int b)


外部函数:extern int fun( int a, int b)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值