C语⾔程序段的定义、实际应⽤分析
1、程序段的概念
程序段就是将你写的代码分成不同的段,拥有相同段属性的代码链接时会被链接在⼀起。将来程序在内存中运⾏时,相同段属性的代码就会加载在连续的地址中。如果你不指定代码的段属性,编译器就会按照默认的规则对代码进⾏程序段的划分,所以写应⽤程序的程序员不⽤关⼼程序段,反正编译器会⾃动划分程序段。程序段分为先天段和⾃定义段。
先天段:就是每个程序都会有的基础段属性,你不⽤指定编译器也会⾃动划分,包括代码段、数据段、bss段; ⾃定义段:就要靠⾃⼰主动去指定代码的段属性。
2、链接脚本
上⾯已经将代码赋予了不同的段属性,相当于对代码进⾏了分类。在链接的时候就需要将不同段属性的代码链接成⼀个可执⾏程序,这就涉及到链接规则,怎么合理
的将代码组织起来,⽐如:哪些段放在前⾯,哪些段放在后⾯,相同段属性的代码要放在⼀起······。链接脚本就是指定链接规则,让编译器知道怎么组织代码。自定义函数怎么用c语言
、。
3、程序段的组成
代码段(.text):⼜叫⽂本段,代码段其实就是你写的那些函数和头⽂件; 数据段(.data):初始化为⾮零的全局变量; bss段(.bss):未初始化或者初始化为零的全局变量;bss段在加载到内存时,整个段都会被清零。 ⾃定义段:在写代码时⾃⼰指定段属性;
4、⾃定义段的好处
⾃定义段就是你主动将某些代码赋予特有的段属性,将来在链接的时候,具有相同段属性的代码会被链接在⼀起。简单来说,就是你想把某些代码链接的时候挨着放在⼀起,就可以把那些特有的段属性。我的理解,⾃定义段的好处就是既有数组按下标访问的优势,也有链表⽅便扩展的优势。因为你将代码赋予相同的段属性,将来这些代码都被链接在⼀块,所有你可以向数组⼀样去访问这些代码;⼜因为⾃定义段并没有限制⼀个段的代码数量,你想指定多少代码为同⼀个段属性都可以,所以⼜具有链表的扩展性。
5、⾃定义段的应⽤
、、。
6、为什么C语⾔中未初始化的全局变量默认值是零?
因为C语⾔把未显式初始化的全局变量放在了bss段,所以能够保证其值为0。
7、如何保证显式初始化为⾮0的全局变量在main之前就被赋值了?
因为它把这类变量放在了.data段 中,⽽.data段会在main执⾏之前被处理(初始化)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论