打印
[DSP编程]

C语言-存储类&作用域&生命周期&链接属性

[复制链接]
240|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
蒋博1026|  楼主 | 2019-12-23 08:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、概念解析

(1)存储类

a.存储类就是存储类型,也就是描述C语言变量在何种地方存储。

b.内存有多种管理办法:栈、堆、数据段、bss段、.text段......一个变量的存储类属性就是描述这个变量存储在何种内存段中。

c.譬如:局部变量分配在栈上,所以它的存储类就是栈;显式初始化为非0的全局变量分配在数据段,显式初始化为0和没有显示初始化

(默认为0)的全局变量分配在bss段。

(2)作用域

a.作用域就是描述这个变量起作用的代码范围。

b.基本来说,C语言变量的作用域规则是代码块作用域。意思就是这个变量起作用的范围是当前的代码块。代码块就是一对大括号{}括起来

的范围,所以一个变量的作用域是:这个变量定义所在的{}范围内从这个变量定义开始往后的部分。(这就解释了为什么变量定义总是在一个

函数的最前边)

(3)生命周期

a.声明周期是描述这个变量什么时候诞生(运行时分配内存空间给这个变量)及什么时候死亡(运行时收回这个内存空间,此后再不能访问

这个内存地址,或者访问这个内存地址已经和这个变量无关了)的。

b.变量和内存的关系,就和人(变量)去图书馆借书(内存)一样。变量的生命周期就好像我们借书的这段周期一样。

c.研究变量的生命周期可以帮助我们理解程序运行的一些现象、理解C语言的一些规则。

(4)链接属性

a.程序从源程序到最终可执行程序,经历的过程:编译、链接。

b.编译阶段就是把源代码搞成.o目标文件,目标文件里面有很多符号和代码段、数据段、bss段等分段。符号就是编程中的变量名、函数名等。

运行时变量名、函数名能够和相应的内存对应起来,靠符号来做链接的。

c. .o的目标文件链接生成最终可执行程序的时候,其实就是把符号和相对应的段给链接起来。C语言中的符号有三种链接属性:外连接属性、

内链接属性、无连接属性。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

323

主题

1827

帖子

18

粉丝