lecture9一c程序组织 绳伟光 上海交通大学微纳电子学系 2017年03月28日 SHA
lecture 9 —— C程序组织 绳伟光 上海交通大学微纳电子学系 2017年03月28日
内容 存储类别、链接、生存期、作用域 ■C文件结构 ■C程序的文件组织 ■文本排版程序示例 ■c程序的Build 2
存储类别、链接、生存期、作用域 C文件结构 C程序的文件组织 文本排版程序示例 C程序的Build 内容 2
存储类别、链接、生存期、作用域 存储类别:C中的存储类别规定了在内存中存 储数据的方式 作用域:作用域描述了程序中可通过名字访问 标识符的区域 链接:辅助作用域描述标识符的可见性,辅助 链接器进行链接过程 ■生存期:描述了标识符处于有效状态的时间区 间
存储类别:C中的存储类别规定了在内存中存 储数据的方式 作用域:作用域描述了程序中可通过名字访问 标识符的区域 链接:辅助作用域描述标识符的可见性,辅助 链接器进行链接过程 生存期:描述了标识符处于有效状态的时间区 间 存储类别、链接、生存期、作用域 3
作用域 ■c变量的作用域 必块作用域:只在某复合语句规定的块内可见 函数作用域:仅用于goto的标签,表示在某函数体内部有 效,不受块作用域限制 必函数原型作用域:仅在函数原型中可见 void foo(int m,int n,array[m][n]); 文件作用域:处于所有函数外面,从定义处直到当前C文件 结尾可见 ■注:C编译器每次只能编译一个C文件(翻译单元),因 此C编译器的视野范围只有一个C文件大小;链接器视 野范围为所有涉及的目标文件 ■作用域的概念需要从编译器的角度进行理解
C变量的作用域 块作用域:只在某复合语句规定的块内可见 函数作用域:仅用于goto的标签,表示在某函数体内部有 效,不受块作用域限制 函数原型作用域:仅在函数原型中可见 void foo(int m, int n, array[m][n]); 文件作用域:处于所有函数外面,从定义处直到当前C文件 结尾可见 注:C编译器每次只能编译一个C文件(翻译单元),因 此C编译器的视野范围只有一个C文件大小;链接器视 野范围为所有涉及的目标文件 作用域的概念需要从编译器的角度进行理解 作用域 4
关于块的进一步解释 块中声明的变量:当程序进入块中时,变量被 声明并获得空间,离开块时变量被销毁 ■ 块中声明的变量具有块作用域,不能从块外进 行访问 函数体本身就可以看作一个块 ■利用块声明变量的优点: C89规定函数内的变量只能在函数体头部声明,即 使仅仅是临时使用的变量,利用块侧可以打破限制 必减少命名冲突 ■( 99允许变量在块内任何地方声明
关于块的进一步解释 块中声明的变量:当程序进入块中时,变量被 声明并获得空间,离开块时变量被销毁 块中声明的变量具有块作用域,不能从块外进 行访问 函数体本身就可以看作一个块 利用块声明变量的优点: C89规定函数内的变量只能在函数体头部声明,即 使仅仅是临时使用的变量,利用块则可以打破限制 减少命名冲突 C99允许变量在块内任何地方声明 5