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文档。上传文档
查看更多
1. Static用法 1.1 static 声明的变量在 C语言中有两方面的特征: 1) 、变量会被放在程序的全局存储区中, 这样可以在下一次调用的时候还可以保持原来的赋值。 这一点是它与堆栈变量和堆变量的区别。 2) 、变量用 static 告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的 区别。 1.2 特点 A. 若全局变量仅在单个 C 文件中访问, 则可以将这个变量修改为静态全局变量, 以降低模块间 的耦合度; B.若全局变量仅由单个函数访问, 则可以将这个变量改为该函数的静态局部变量, 以降低模块 间的耦合度; C.设计和使用访问动态全局变量、 静态全局变量、 静态局部变量的函数时, 需要考虑重入问题; D.如果我们需要一个可重入的函数, 那么, 我们一定要避免函数中使用 static 变量 (这样的函数 被称为:带 “内部存储器 ”功能的的函数 ) E.函数中必须要使用 static 变量情况 : 比如当某函数的返回值为指针类型时,则必须是 static 的 局部变量的地址作为返回值,若为 auto 类型,则返回为错指针。 函数前加 static 使得函数成为静态函数。但此处 “static 的含义不是指存储方式,而是指对函数” 的作用域仅局限于本文件 (所以又称内部函数 ) 。使用内部函数的好处是:不同的人编写不同的函 数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。 扩展分析 :术语 static 有着不寻常的历史 .起初,在 C 中引入关键字 static 是为了表示退出一个块 后仍然存在的局部变量。随后, static 在 C 中有了第二种含义:用来表示不能被其它文件访问的 全局变量和函数。为了避免引入新的关键字,所以仍使用 static 关键字来表示这第二种含义。最 后, C++重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此 类的任何特定对象的变量和函数 (与 Java 中此关键字的含义相同 ) 。 1.3 关键字 static 的作用是什么 这个简单的问题很少有人能回答完全。在 C 语言中,关键字 static 有三个明显的作用: 1.3.1 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不 变。 int testStatic() { int x=1; x++; return x; } main() { int i; for(i=0;i5;i++) printf(%d\n,testStatic()); getch(); } ==》 2 2 2 2 2 int testStatic() { static int x=1; x++; return x; } main() { int i; for(i=0;i5;i++) printf(%d\n,testStatic()); getch(); } ==》 2 3 4 5 6 1.3.2 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用 函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 1.3.3 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。 那就是,这个函数被限制在声明它的模块的本地范围内使用。 static 关键字是 C, C++中都存在的关键字 , 它主要有三种使用方式 , 其中前两种只指 在 C 语言中使用 , 第三种在 C++中使用 (C,C++中具体细微操作不尽相同

文档评论(0)

怡然自得 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档