C变量及函数存储类型


1.变量及函数声明格式
      在C语言中,对于一个变量的声明/定义格式如下:
      存储类型      类型修饰符   数据类型   变量名
  • 数据类型用来指明变量的存储大小,即一个该类型的变量占用了多大的内存空间。
  • 类型修饰符用来修饰变量的存储及表现方式。包括long,short,signed,unsigned,void,const,volatile等。
  • 存储类型用来指明变量的存储位置,常见的存储类型有auto,extern,register,static,即在运行该变量在哪一个段分配内存空间,在一段执行程序中,可以为变量分配存储空间的有BSS区,数据区,栈区,堆区。
       在C语言中,对于一个函数的声明格式如下:
         存储类型     返回数据类型    函数名(参数列表)
  • 函数名即该函数的标识符。
  • 返回数据类型时该函数退出时返回给调用函数的数据的数据类型。
  • 存储类型用来标识该函数的作用域,而不是存储位置,主要有extern和static两个,auto和register不用来标识程序的存储类型。
2.存储类型
   1》auto:只能用来标识变量的存储类型,意义为自动类型,标识该局部变量存储在正在运行进程栈区域,一般情况,对于局部变量,auto为默认的存储类型,不需要显示指定。
   2》extern:全局变量的作用域是整个项目中的所有文件,但是,要使用在其他文件中定义的全局变量,需要包含头文件或者extern关键字,否则只能在定义它的文件中被使用。如果该全局变量在头文件中定义,则在需要使用该变量的文件中包含相应的头文件即可,但如果多个文件都引用此头文件,且这些文件将一起编译进一个项目中,如果该全局变量被初始化了,则有可能造成重复定义(在GCC环境下,在一个头文件中定义某全局变量但不初始化,其被多个文件包含的情况是允许的)。
   3》register:register关键字只能用于局部变量。定义存储类型为register的变量只能是整形和字符型,此关键字主要用于表示长期被使用的变量。
   4》static:意为静态的,既可以表示变量,也可以标识函数。被定义为静态类型的变量(无论全局的还是局部的)存储在数据区,其生命周期为整个程序。如果是静态局部变量,其作用域为自身的一个对{}内,如果是静态全局变量,其作用域为当前文件;静态变量如果没有初始化,将自动初始化为0,静态变量只会被初始化一次,使用时为上次的返回值;被定义为静态类型的函数的作用域只能是当前文件,因此不能再项目的其他文件中被调用。将不需要再其他文件中被调用的函数声明为static类型很有必要,这将在一定程度上避免函数名称的冲突。
   5》常量数据:字符串常量存储在代码段,其生存期为整个程序运行时间。但作用域为当前文件。
3.总结
关于不同存储类型的变量和函数的作用域和生存域的总结如下图:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值