C语言变量和函数存储类别

本文详细介绍了C语言中的存储类别,包括作用域、链接和存储期。讨论了自动变量、寄存器变量、静态无链接变量、外部链接和内部链接的静态变量的特性。此外,还阐述了函数的存储类别,包括外部函数、静态函数和内联函数。
摘要由CSDN通过智能技术生成

C语言提供了多种存储类别(storage class)在内存中存储数据,这样一块内存称为对象(与面对对象编程中的类对象不同)。一个对象可以存储一个或多个值,也可能并未存储实际的值。

在程序中,访问对象通过变量声明,声明创建了一个标识符(identifier),标识符可用来指定特定对象的内容。除了可以通过标识符指定对象的方式外,还可使用解引用指针的方式。

基本概念

为了更好地理解不同的存储类别,首先简单介绍几个概念。

作用域

作用域:程序中可访问标识符的区域,有以下几种类别:

  1. 块作用域:块作用域变量的范围是从定义处到包含该定义的块末尾。这里的块可理解成一对大括号{}
  2. 函数作用域:仅用于goto语句标签。一个标签即使首次出现在函数的内层块中,它的作用域也延伸至整个函数。
  3. 函数原型作用域:用于原型中的形参名,范围是从形参定义处到原型声明结束。这也是函数原型中有无变量名无关紧要的原因。
  4. 文件作用域:变量定义在函数的外面,也即全局变量,范围从定义处到所在文件的末尾。

链接

C语言有3种链接属性:

  1. 无链接:具有块作用域、函数作用域或函数原型作用域的变量,变量属于定义的块或函数。
  2. 外部链接:外部链接变量在多文件程序中使用。
  3. 内部链接:内部链接变量只能在一个翻译单元种使用。

翻译单元:一个源代码文件与其包含的头文件。

区分外部链接和内部链接关键看是否使用了static,若使用了&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值