关键字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成员变量。

static、final、transient等关键字的作用

staticstatic表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块 被static修饰后的成员,在编译时由内存分配一块内存空间,直到程序停止运行才会释...
  • zhangfengzhang123
  • zhangfengzhang123
  • 2017年02月28日 17:11
  • 767

Static关键字所有用法详解

以前总是对static的涵义模棱两可,不太敢用,也不知道什么地方改用,static用法非常广泛,静态变量、静态成员、静态函数等,如果用的好,会是程序提升一个等级,并且可以解决很多实际问题,比如单例模式...
  • yanglusheng
  • yanglusheng
  • 2016年07月13日 10:22
  • 1264

java中 static,final,transient,volatile关键字的作用

static 和final   static  静态修饰关键字,可以修饰 变量,程序块,类的方法;  当你定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这...
  • i0048egi
  • i0048egi
  • 2017年02月12日 21:27
  • 1348

java学习(1).static,volatile,transient,final等关键字

static 静态关键字简而言之一句话,不对类来实例化就可以用。一,相关用法1,static可以修饰类中定义的变量 也叫做静态变量。此时表明这个变量和具体类的实例无关而是和类相关的。静态变量和普通类变...
  • gwbbigbang
  • gwbbigbang
  • 2017年06月04日 17:44
  • 251

Java关键字static、final、transient详解

1.static关键字 static关键字修饰的变量表示该变量为该类的所有对象共有。static修饰的方法表示类的方法,通过类名直接可以调用该方法。 static 修饰的代码块可以让类刚加载到内存的时...
  • sinat_22808389
  • sinat_22808389
  • 2017年03月31日 15:27
  • 238

C#static关键字用法总结

C#static关键字用法总结1.     首先解释一下static是什么意思?Static是静态的意思,既然是静态,就是不变的,而不变就是他不会因为类中实例化对象的不同而不同,它在类中永远只有一份,...
  • wochuailimin
  • wochuailimin
  • 2010年05月16日 14:42
  • 2267

Android中得Static关键字

static关键字修饰的方法或者变量是由所有类实例共享的,即使没有任何类实例,它也可以被访问。这些变量只与类有关—而非类的实例, 因此他们总是作为类型信息的一部分而存储在方法区。只要类被加载了,就可以...
  • housheng_07
  • housheng_07
  • 2015年11月27日 17:43
  • 769

Static关键字深入理解

1、static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。 两者的区别是: 对于静态...
  • qq1028951741
  • qq1028951741
  • 2016年11月30日 10:05
  • 237

关键字 static 的作用是什么?

关键字 static 的作用是什么? 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,...
  • zm1_1zm
  • zm1_1zm
  • 2017年01月01日 20:52
  • 355

C语言关键字static和volatile 的含义和作用

C语言关键字static和volatile 的含义和作用
  • qq_40646385
  • qq_40646385
  • 2017年10月19日 15:43
  • 148
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关键字static
举报原因:
原因补充:

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