C语言作用域、存储类型、链接类型、static关键字

1、作用域:文件作用域、函数作用域、代码块作用域和原型作用域。

文件作用域:在任何代码块之外声明

2、链接属性:externalinternalnone(相同的标识符出现在几个不同的源文件中时,是表示一个实体,还是不同实体,这由链接属性决定)

1none:总是被当作单独的个体,也就是说该标识符的多个声明被当做不同的实体;

2external:标识符不论声明多少次、位于几个源文件都表示同一个实体;

3internal:同一个源文件中的所有声明都指同一个实体,但位于不同源文件的多个声明则不属于同一个实体。

staticextern用于在声明正修改标识符的链接属性:

1static:如果某个声明原本是external链接属性,在它前面加上static之后就变为internal

2extern:一般而言,它为一个标识符指定external链接属性,但是如果该标识符的第2次或以后的声明时,它并不改变由第1次声明所指定的链接属性。

3、存储类型:

1)指的是存储变量值的内存类型,变量的存储类型决定了变量何时被创建、何时销毁、保持多久。

2)三个地方用于存储变量:普通内存、运行时堆栈、硬件寄存器

3)任何代码块之外声明的变量总是存储于静态内存中,这类变量称为静态变量。在程序运行之前创建,整个执行期间始终存在;

4)代码块内部声明的变量默认为自动变量,栈中,若加上static则变为静态的变量,但是作用域没变;

5register:寄存器变量。

4static关键字:(1)当它用于函数定义,或者代码块之外的变量声明时,static关键字用于修改标识符的链接属性,从external改为internal,但是标识符的存储类型和作用域不受影响。用static声明的函数或者变量只能在声明它们的原文件中访问。(2)当它用于代码块内部的变量声明时,static关键字用于修改变量的存储类型,从自动变量变为静态变量,链接属性和作用域不受影响;这种方式声明的变量在执行之前创建,并且在程序整个执行期间都存在。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值