版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、变量在将变量前,先解释一下声明和定义这两个概念。声明一个变量意味着 向编译器描述变量的类型,但并不为变量分配存储空间。定义一个变量意味着 在声明变量的同时还要为变量分配存储空间。在定义一个变量的同时还可以对 变量进行初始化。局部变量通常只定义不声明,而全局变量多在源文件中定义,在头文件中声 明。局部变量在一个函数的内部定义的变量是内部变量,它只在本函数范围内有 效。自动变量auto函数中的局部变量,其缺省格式是自动变量类型。例如,在函数体中intb, c=3;和 auto int b, c=3;是等价的。自动变量是动态分配存储空间的,函数结束后就释放。自动变量如不赋初 值,则它的值是一个不确定
2、的值。静态局部变量static静态局部变量是指在函数体内声明和定义的局部变量,它 仅供本函数使用,即其他函数不能调用它。静态局部变量的值在函数调用结束 后不消失而保留原值,即其占用的存储单元不释放,在下一次函数调用时,该 变量已有值,就是上一次函数调用结束时的值。静态局部变量在静态存储区分 配存储单元,在程序的整个运行期间都不释放。静态局部变量是在编译时赋初 值的,即只赋初值一次。在SDT编译器中,建议对静态局部变量赋初值,否则该静态局部变量的初值为 不确定值。在其他编译器中,未初始化的静态局部变量的初值可能为零,这由 具体的编译器所决定,使用前最好测试一下。寄存器变量register带reg
3、ister修饰符的变量暗示(仅仅是暗示而不是命令)编译程序本变量将被频繁使用,如果可能的话,应将其保留在CPU勺寄存器中,以加快其存取速度。对于现有的大多数编译程序,最好不要使用register修饰符。因为它是对早期低效的C编译程序的一个很有价值的补充。随着编译程序技术的进 步,在决定哪些变量应当被存到寄存器中时,现在的C编译程序能比程序员做 出更好的决定。全局变量在函数之外定义的变量称为外部变量,外部变量是全局变量,它可以为本文 件中其他函数所共用。全局变量都是静态存储方式,都是在编译时分配内存, 但是作用范围有所不同。静态外部变量static静态外部变量只能在本文件中使用。所以静态外部变量
4、应该在当前源文件中声 明和定义。外部变量extern定义函数中的全局变量时,其缺省格式是外部变量类型。外部 变量应该在一个头文件中声明,在当前源文件中定义。外部变量允许其他文件 引用。下例声明了一个变量和一个结构,定义了两个变量,其中一个定义带初始化:extern int decll; / this is a declarationstruct decl2int member;);/ this just declares the type-no variablementionedintdef1 = 8;11 this is a definitionintdef2; / this is a de
5、finition函数内部函数的声明和定义多在当前源文件中完成;而外部函数通常在源文件中定 义,在头文件中声明。内部函数只在当前源文件中使用的函数应该说明为内部函数。内部函数应该在当前源文件中声明和定义。若内部函数在头文件中声明,其他源文件通过 包含这个头文件也可使用这个函数,但这样就失去了其做为内部函数的意义。优点:使用内部函数,可以使函数只局限于所在文件。这避免了与其他源文件中可能出现的同名函数发生冲突。例:File : function 1.cinclude “ function 1.h static int stat_func(void);void MasterFunction(void
6、)(re = stat_func();static int stat_func(void)return rc;外部函数对于可在当前源文件以外使用的函数,应该在一个头文件中声明。其他源文 件可通过包含这个头文件或进行声明来使用这些函数(推荐用前者)O 一个良好的编程习惯是在头文件中声明函数的原型。这可方便编译程序查错。 定义函数时,缺省的函数类型是外部函数。如口: void fun2(void);和extern voidfun2(void);其函数类型是等价的,但前一个是定义函数,后一个是声明函 数。小结编写程序,尤其是大型程序时,建议采用上文所述的方法对不同的变量、 函数进行必要的声明、定义。
7、做好这些细节上的事务,可以为您的编程、调 试、移植等带来很大的方便。变量在将变量前,先解释一下声明和定义这两个概念。声明一个变量意味着向编 译器描述变量的类型,但并不为变量分配存储空间。定义一个变量意味着在声 明变量的同时还要为变量分配存储空间。在定义一个变量的同时还可以对变量 进行初始化。局部变量通常只定义不声明,而全局变量多在源文件中定义,在头文件中声 明。局部变量在一个函数的内部定义的变量是内部变量,它只在本函数范围内有 效。自动变量auto函数中的局部变量,其缺省格式是自动变量类型。例如,在函数体中intb, c=3;和 auto int b, c=3;是等价的。自动变量是动态分配存储
8、空间的,函数结束后就释放。自动变量如不赋初 值,则它的值是一个不确定的值。静态局部变量static静态局部变量是指在函数体内声明和定义的局部变量,它 仅供本函数使用,即其他函数不能调用它。静态局部变量的值在函数调用结束 后不消失而保留原值,即其占用的存储单元不释放,在下一次函数调用时,该 变量已有值,就是上一次函数调用结束时的值。静态局部变量在静态存储区分 配存储单元,在程序的整个运行期间都不释放。静态局部变量是在编译时赋初 值的,即只赋初值一次。在SDT编译器中,建议对静态局部变量赋初值,否则该静态局部变量的初值为 不确定值。在其他编译器中,未初始化的静态局部变量的初值可能为零,这由 具体的
9、编译器所决定,使用前最好测试一下。寄存器变量register带register修饰符的变量暗示(仅仅是暗示而不是命令)编译程序本变量将被频繁使用,如果可能的话,应将其保留在CPU勺寄存器中,以加快其存取速度。对于现有的大多数编译程序,最好不要使用register修饰符。因为它是对早期低效的C编译程序的一个很有价值的补充。随着编译程序技术的进 步,在决定哪些变量应当被存到寄存器中时,现在的C编译程序能比程序员做 出更好的决定。全局变量在函数之外定义的变量称为外部变量,外部变量是全局变量,它可以为本文件中其他函数所共用。全局变量都是静态存储方式,都是在编译时分配内存,但是作用范围有所不同。静态外部
10、变量static静态外部变量只能在本文件中使用。所以静态外部变量应该在当前源文件中声明和定义。外部变量extern定义函数中的全局变量时,其缺省格式是外部变量类型。外部 变量应该在一个头文件中声明,在当前源文件中定义。外部变量允许其他文件 引用。下例声明了一个变量和一个结构,定义了两个变量,其中一个定义带初始化:extern int decll; / this is a declarationstruct decl2(int member;/ this just declares the type- no variablementionedintdef1 = 8;/ this is a def
11、initionintdef2; / this is a definition函数内部函数的声明和定义多在当前源文件中完成;而外部函数通常在源文件中定 义,在头文件中声明。内部函数只在当前源文件中使用的函数应该说明为内部函数。内部函数应该在当前源文件中声明和定义。若内部函数在头文件中声明,其他源文件通过 包含这个头文件也可使用这个函数,但这样就失去了其做为内部函数的意义优点:使用内部函数,可以使函数只局限于所在文件。这避免了与其他源文件中可能出现的同名函数发生冲突。例:File : function 1.c include “ functionl.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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络安全咨询员班组协作知识考核试卷含答案
- 掘进及凿岩机械装配调试工岗位技能竞赛考核试卷含答案
- 2026中考第一轮复习(知识能力+解题思路+易错警示+真题演练)第21课时:圆的基本性质(学生版+教师版合并)
- 2026年春招:装备制造题库及答案
- 2026年泵产品智能制造产业基地建设项目市场调研报告
- 传染免疫模拟试题及答案
- 松鼠阅读题目及参考答案
- 行车安全专业试题及详细答案剖析
- 城镇企业职工基本养老保险关系转移接续办法
- 餐饮咨询顾问合同范本
- 化工产品消费结构演变与区域供需匹配规律研究
- 2025年嘉兴辅警文职笔试及答案
- 化工分析培训课件模板
- 设施设备维护人员面试题及答案
- 中药处方保密协议书
- 2025年安徽省高职单独招生文化课统一考试(英语)
- 公路施工项目安全风险评估报告范本
- 剧毒化学品名录(2025年版)
- 2025年烘焙技术知识培训考试题库与答案
- DG-TG08-12-2024 普通中小学建设标准
- 温泉酒店室内装修施工方案
评论
0/150
提交评论