C_作用域、链接属性和储存类型

本文详细介绍了C语言中的作用域,包括文件作用域、函数作用域、代码块作用域和原型作用域。同时,探讨了链接属性,如external、internal和none,并通过extern和static关键字的使用来改变标识符的链接属性。此外,还解释了储存类型,包括静态内存、运行时内存和硬件寄存器,以及static关键字在不同场景下的作用。通过多个实验,读者可以更好地理解这些概念的实际应用。
摘要由CSDN通过智能技术生成

1.作用域

1.1 概述

变量在程序的某个部分声明时,只能在程序的一定区域内才能访问,这个区域就成为作用域。作用域分为四种——文件作用域、函数作用域、代码块作用域和原型作用域。编译器通过变量声明的位置来确定作用域

1.2 文件作用域

当变量在所有代码块之外声明时就在文件作用域中,文件作用域的范围是从变量声明处一直到文件的结束。但如果声明在“.h”文件中,并且该文件被其他文件用#include 所包含,那该变量的作用域也会相应的扩大到包含文件的结束。

1.3 函数作用域

函数作用域只适用于语句标签,语句标签用于goto语句。一个函数作用域内的语句标签必须唯一。

1.4 代码块作用域

一对花括号之间的所有语句成为代码块作用域。在一个代码块作用域开始定义的变量可以被该代码块内的所有语句使用。
下面考虑两种情况:
代码块之间的嵌套

{
    int a = 100;
    {
        int a;
    }
}

此时内层的a就会把外层的a隐藏,如果修改内层a的值,不会影响外层的a

非嵌套的两个代码块
如果两个代码块之间没有交集,那么一个代码块的内的就语句不能使用另一个代码块内的变量。

1.5原型作用域

原型作用域适用于在函数声明中的参数名。

2.链接属性

2.1 概述

链接属性决定如何处理位于不同文件内的标识符。链接属性共有三种——external(外部)、internal(内部)、none(无)。

  • 链接属性为none的标识符不论在那个文件内都是独立的个体。
  • 链接属性为internal的标识符在同一个原文件内的所有声明均指向同一个实体
  • 链接属性为external的标识符不论声明多少次,位于几个原文件内均表示同一实体
    在文件作用域内声明的变量或是函数,在缺省的条件下链接属性为external,其余的为none

2.2 extern关键字

如果使用externa关键字声明某一个变

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值