




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C C 语言函数定义和函数声明语言函数定义和函数声明 变量 在将变量前 先解释一下声明和定义这两个概念 声明一个变量意味着 向编译器描述变量的类型 但并不为变量分配存储空间 定义一个变量 意味着在声明变量的同时还要为变量分配存储空间 在定义一个变量的 同时还可以对变量进行初始化 局部变量通常只定义不声明 而全局变量多在源文件中定义 在头文件 中声明 局部变量 在一个函数的内部定义的变量是内部变量 它只在本函数范围内有效 自动变量 auto 函数中的局部变量 其缺省格式是自动变量类型 例如 在函数体中 int b c 3 和 auto int b c 3 是等价的 自动变量是动态分配存储空间的 函数结束后就释放 自动变量如不赋 初值 则它的值是一个不确定的值 静态局部变量 static 静态局部变量是指在函数体内声明和定义的局部变量 它仅供本函数使 用 即其他函数不能调用它 静态局部变量的值在函数调用结束后不消 失而保留原值 即其占用的存储单元不释放 在下一次函数调用时 该 变量已有值 就是上一次函数调用结束时的值 静态局部变量在静态存储区分配存储单元 在程序的整个运行期间都不 释放 静态局部变量是在编译时赋初值的 即只赋初值一次 在 SDT 编译器中 建议对静态局部变量赋初值 否则该静态局部变量的 初值为不确定值 在其他编译器中 未初始化的静态局部变量的初值可 能为零 这由具体的编译器所决定 使用前最好测试一下 寄存器变量 register 带 register 修饰符的变量暗示 仅仅是暗示而不是命令 编译程序本 变量将被频繁使用 如果可能的话 应将其保留在 CPU 的寄存器中 以 加快其存取速度 对于现有的大多数编译程序 最好不要使用 register 修饰符 因为它 是对早期低效的 C 编译程序的一个很有价值的补充 随着编译程序技术 的进步 在决定哪些变量应当被存到寄存器中时 现在的 C 编译程序能 比程序员做出更好的决定 全局变量 在函数之外定义的变量称为外部变量 外部变量是全局变量 它可以为 本文件中其他函数所共用 全局变量都是静态存储方式 都是在编译时 分配内存 但是作用范围有所不同 静态外部变量 static 静态外部变量只能在本文件中使用 所以静态外部变量应该在当前源文 件中声明和定义 外部变量 extern 定义函数中的全局变量时 其缺省格式是外部变量类型 外部变量应该 在一个头文件中声明 在当前源文件中定义 外部变量允许其他文件引 用 下例声明了一个变量和一个结构 定义了两个变量 其中一个定义带初 始化 extern int decl1 this is a declaration struct decl2 int member this just declares the type no variable mentioned int def1 8 this is a definition int def2 this is a definition 函数 内部函数的声明和定义多在当前源文件中完成 而外部函数通常在源文 件中定义 在头文件中声明 内部函数 只在当前源文件中使用的函数应该说明为内部函数 内部函数应该在当 前源文件中声明和定义 若内部函数在头文件中声明 其他源文件通过 包含这个头文件也可使用这个函数 但这样就失去了其做为内部函数的 意义 优点 使用内部函数 可以使函数只局限于所在文件 这避免了与其他 源文件中可能出现的同名函数发生冲突 例 File function1 c include function1 h static int stat func void void MasterFunction void rc stat func static int stat func void return rc 外部函数 对于可在当前源文件以外使用的函数 应该在一个头文件中声明 其他 源文件可通过包含这个头文件或进行声明来使用这些函数 推荐用前 者 一个良好的编程习惯是在头文件中声明函数的原型 这可方便编译程序 查错 定义函数时 缺省的函数类型是外部函数 如 void fun2 void 和 extern void fun2 void 其函数类型是等价的 但前一个是定义函 数 后一个是声明函数 小结 编写程序 尤其是大型程序时 建议采用上文所述的方法对不同的变量 函数进行必要的声明 定义 做好这些细节上的事务 可以为您的编程 调试 移植等带来很大的方便 变量 在将变量前 先解释一下声明和定义这两个概念 声明一个变量意味着 向编译器描述变量的类型 但并不为变量分配存储空间 定义一个变量 意味着在声明变量的同时还要为变量分配存储空间 在定义一个变量的 同时还可以对变量进行初始化 局部变量通常只定义不声明 而全局变量多在源文件中定义 在头文件 中声明 局部变量 在一个函数的内部定义的变量是内部变量 它只在本函数范围内有效 自动变量 auto 函数中的局部变量 其缺省格式是自动变量类型 例如 在函数体中 int b c 3 和 auto int b c 3 是等价的 自动变量是动态分配存储空间的 函数结束后就释放 自动变量如不赋 初值 则它的值是一个不确定的值 静态局部变量 static 静态局部变量是指在函数体内声明和定义的局部变量 它仅供本函数使 用 即其他函数不能调用它 静态局部变量的值在函数调用结束后不消 失而保留原值 即其占用的存储单元不释放 在下一次函数调用时 该 变量已有值 就是上一次函数调用结束时的值 静态局部变量在静态存储区分配存储单元 在程序的整个运行期间都不 释放 静态局部变量是在编译时赋初值的 即只赋初值一次 在 SDT 编译器中 建议对静态局部变量赋初值 否则该静态局部变量的 初值为不确定值 在其他编译器中 未初始化的静态局部变量的初值可 能为零 这由具体的编译器所决定 使用前最好测试一下 寄存器变量 register 带 register 修饰符的变量暗示 仅仅是暗示而不是命令 编译程序本 变量将被频繁使用 如果可能的话 应将其保留在 CPU 的寄存器中 以 加快其存取速度 对于现有的大多数编译程序 最好不要使用 register 修饰符 因为它 是对早期低效的 C 编译程序的一个很有价值的补充 随着编译程序技术 的进步 在决定哪些变量应当被存到寄存器中时 现在的 C 编译程序能 比程序员做出更好的决定 全局变量 在函数之外定义的变量称为外部变量 外部变量是全局变量 它可以为 本文件中其他函数所共用 全局变量都是静态存储方式 都是在编译时 分配内存 但是作用范围有所不同 静态外部变量 static 静态外部变量只能在本文件中使用 所以静态外部变量应该在当前源文 件中声明和定义 外部变量 extern 定义函数中的全局变量时 其缺省格式是外部变量类型 外部变量应该 在一个头文件中声明 在当前源文件中定义 外部变量允许其他文件引 用 下例声明了一个变量和一个结构 定义了两个变量 其中一个定义带初 始化 extern int decl1 this is a declaration struct decl2 int member this just declares the type no variable mentioned int def1 8 this is a definition int def2 this is a definition 函数 内部函数的声明和定义多在当前源文件中完成 而外部函数通常在源文 件中定义 在头文件中声明 内部函数 只在当前源文件中使用的函数应该说明为内部函数 内部函数应该在当 前源文件中声明和定义 若内部函数在头文件中声明 其他源文件通过 包含这个头文件也可使用这个函数 但这样就失去了其做为内部函数的 意义 优点 使用内部函数 可以使函数只局限于所在文件 这避免了与其他 源文件中可能出现的同名函数发生冲突 例 File function1 c include function1 h static int stat func void void MasterFunction void rc stat func static int stat func void return rc 外部函数 对于可在当前源文件以外使用的函数 应该在一个头文件中声明 其他 源文件可通过包含这个头文件或进行声明来使用这些函数 推荐用前 者 一个良好的编程习惯是在头文件中声明函数的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程项目管理总包合同
- 2025年公共场所安全风险评估与预警系统建设合同
- 2025年生态主题儿童娱乐设施装修设计施工一体化合同
- 2025年度西南地区冷链物流货物搬运服务合同
- 2025年金融科技风控解决方案研发与应用合同
- 2025年度智能环保设备制造与安装工程合同
- 2025年绿色厕所环境健康评估与维护服务合同
- 2025年度幼儿园儿童成长跟踪与家庭教育指导服务协议
- 2025年度商务大厦智能化安防系统运维劳务派遣服务合同
- 2025年财务经理招聘专业知识测试题库及答案解析
- 2025至2030年中国奶牛养殖行业竞争格局分析及投资战略咨询报告
- 光伏施工基本知识培训课件
- 创伤性血气胸的急救与护理
- 2025关于医疗平台与医疗机构合作合同模板
- 福州工会考试试题及答案
- 学校后勤工作管理培训
- 胰腺炎的营养治疗与护理
- 教师校园安全培训课件
- 头皮健康与头发生长关系的研究
- 财务结账相关管理制度
- 叉车维修方案(3篇)
评论
0/150
提交评论