C语言中的变量的存储类型和作用域以及链接的总结

变量的作用域

文件作用域

在所有函数的开头定义变量,变量具有文件作用域,称为全局变量。全局变量的值在函数执行中一直有效。例如1.c文件中的变量a为全局变量。

1.c

#include<stdio.h>
int f1
int a=10;
int main()
{
   f1(a);
   return;
}
int f1(int x)
{
   for(int i=0;i<10;i++)
   {
      x+=x;
   }
   return x;
}

函数作用域

在函数开头定义的变量,变量具有函数作用域,称为局部变量。局部变量的值只在本函数中起作用。例如1.c中的变量x具有函数作用域。

代码块作用域

在函数内的复合语句中定义的变量,变量具有代码块作用域,也称为局部变量。此变量的值只在代码块中起作用(也就是说只在一个{}里起作用)。例如1.c中的变量i具有代码块作用域,只在for循环中有效。

变量存储类型

C语言中变量按照存储时期划分,分为两种类型。一是自动存储变量(auto),二是静态存储变量(static)。

自动存储变量(auto)

当进入变量的作用域之后就会自动的为变量分配内存,当退出变量的作用域后变量使用的内存就会自动释放。自动变量所使用的内存区域可以重复使用,当函数调结束后当前变量使用的内存又可以被下一个变量使用。

静态存储类型(static)

变量为静态存储时期,在程序执行期间变量会一直存在,不会被释放。也就是说静态变量在函数调用中所获得的值会一直被程序记住。因此全局变量作用域在整个文件,只要程序运行全局变量就一直存在,所以全局变量就一定是静态变量。

变量链接

变量的链接分为内部链接外部链接空链接

空链接
也就是说这个变量不能被作用域之外的任何地方引用,这也是私有变量。所以说具有函数作用域以及代码块作用域的变量都是空链接。
外部链接和内部链接
具有文件作用域的变量,也就是全局变量可以为外部链接也可以为内部链接。外部链接也就是说全局变量不仅可以在1.c源文件中使用,也可以在2.c源文件中使用。但是前提是要用extern关键词声明。

2.c
#include<stdio.h>
extern int a;

当我们在2.c中声明后就可以使用了。
如果变量是内部链接,意思就是只可以在1.c文件中使用,但是要在1.c文件中定义变量时要声明。

1.c
#include<stdio.h>
static int a;

定义变量时前面加上staic变量就是内部链接,即是在2.c中用extern声明也是无效的。

总结

五种存储类

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值