关键字static

转载 2015年07月10日 10:41:33

这个简单的问题很少有人能回答完全。在C语言中,关键字static三个明显的作用:

1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。

2) 模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量

3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

大多数应试者能正确回答第一部分,一部分能正确回答第二部分,但是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。

 

考点:在嵌入式系统中,要时刻懂得移植的重要性,程序可能是很多程序员共同协作同时完成,在定义变量及函数的过程,可能会重名,这给系统的集成带来麻烦,因此保证不冲突的办法是显示的表示此变量或者函数是本地的,static即可。

Linux的模块编程中,这一条很明显,所有的函数和全局变量都要用static关键字声明,将其作用域限制在本模块内部,与其他模块共享的函数或者变量要EXPORT到内核中。

 

static关键字至少有下列n个作用:
1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;

2)限制变量的作用域,在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;

3)限制函数的作用域,在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
4在类中的static成员变量意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见;
5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。

相关文章推荐

MLDN魔乐JAVA_10static关键字.rar

  • 2012年08月08日 13:45
  • 13.99MB
  • 下载

玩转static关键字

  • 2011年03月25日 16:48
  • 117KB
  • 下载

从内存分配角度分析c和java里的static 关键字.

即使作为Java的初学者, 对this 和 static 这两个关键字都不会陌生. 其实也不难理解:     this 关键字:  指的是对象的本身(注意不是类本身)  跟.net 语言的Me 关键字...
  • nvd11
  • nvd11
  • 2013年12月30日 00:05
  • 1687

Duanxx的Java学习:关键字Static详解

  • 2014年08月04日 10:49
  • 302KB
  • 下载

static关键字简介

  • 2014年07月07日 17:54
  • 369KB
  • 下载

Java关键字final、static使用总结

原文链接http://lavasoft.blog.51cto.com/62575/18771/ 一、final         根据程序上下文环境,Java关键字final有“这是无法改变...

C++中static关键字总结

  • 2014年09月24日 15:05
  • 120KB
  • 下载

面向对象基础-static关键字

  • 2012年09月06日 20:13
  • 617KB
  • 下载

Java关键字final、static使用总结

一、final  根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 ...

魔乐JAVA10 static关键字

  • 2011年11月29日 16:54
  • 27.67MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关键字static
举报原因:
原因补充:

(最多只允许输入30个字)