C语言之作用域与存储类型

1.c语言可以确定4种不同类型的作用域:

  • 代码块作用域
    在代码块中定义的变量,具有代码块作用域。作用范围是从变量定义的位置开始,到标志该代码块结束的右大括号(})处

  • 文件作用域
    任何在代码块之外声明的标识符都具有文件作用域,作用范围是从它们的声明位置开始,到文件的结尾处都是可以访问的

  • 原型作用域
    原型作用域只适用于那些在函数原型中声明的参数名

  void function(int,int,int);
    	void func(int a,int b,int c)
    	{
    		……
    	}
  • 函数作用域
    函数作用域只适用于goto语句的标签,作用将goto语句的标签限制在同一个函数内部,以及防止出现重名标签

    声明: 是通知编译器该变量名及相关的类型已存在,不需要再为此申请内存空间;当一个变量被声明的时候,编译器就知道该变量被定义在其他地方
    定义: 当一个变量被定义的时候,编译器为变量申请内存空间并填充一些值
    声明与定义小结: 局部变量既是定义又是声明;定义只能来一次,否则就叫做重复定义某个同名变量;而声明可以有很多次
    2.c语言提供5种不同的存储类型:

    • auto
      在代码块中声明的变量默认的存储类型就是自动变量(auto)

    • register
      寄存器变量,将一个变量声明为寄存器变量,那么该变量就有可能被存放CPU的寄存器中。不能通过取址运算符求地址。

    • static
      使用static来声明局部变量,那就会将局部变量指定为静态局部变量,生存周期变化,作用域不变;
      修饰全局变量时,作用域被限制了(限制到当前源文件)
      修饰函数时,作用域被限制了(限制到当前源文件

    • extern
      extern关键字是用于告诉编译器这个变量或函数在别的地方已经定义过了,不要报错,再去找找。

    • typedef
      类型重命名(自定义数据类型),建议把复杂的类型转换为简单的标识符加上typedef,他就会由变量变为对应的类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值