C语言中变量和函的声明与定义.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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); 其函数类型是等价的,但前一个是定义函 数,后一个是

文档评论(0)

xyl118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档