static函数和变量

转载 2007年10月01日 14:42:00

转自:http://hi.baidu.com/jwjin/blog/item/037fe544bd8fd683b3b7dc3b.html


用static声明的变量在C语言中有两方面的特征:
1)变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
2)变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。

Tips:
A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;
D.如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的的函数)
E.函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

函数前加static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。

扩展分析:
术语static有着不寻常的历史。起初,在C中引入关键字static是为了表示退出一个块后仍然存在的局部变量。随后,static在C中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。为了避免引入新的关键字,所以仍使用static关键字来表示这第二种含义。最后,C++重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的变量和函数(与Java中此关键字的含义相同)。

 

相关文章推荐

static变量和static函数的用法摘抄

  • 2010年08月04日 08:40
  • 29KB
  • 下载

static作用(修饰函数、局部变量、全局变量)

在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。 (1)先来介绍它的第一条也是最重要的一条:隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量...

static变量在Main函数之前执行

一、例1 c/c++语言中,在执行main的入口函数之前,是会首先执行一段代码。 而对于全局变量和static的初始化就是 在main函数之前执行的,例子如下: [c...
  • ThugKd
  • ThugKd
  • 2015年07月06日 17:11
  • 174

static 成员函数及变量整理

1.static成员的所有者是类本身和对象,但是多有对象拥有一样的静态成员。从而在定义对象是不能通过构造函数对其进行初始化。 2.静态成员不能在类定义里边初始化,只能在class body外初始化。...

static成员函数成员变量

再一次吐槽一下,c++这门语言实在是太复杂了,语法规则这么多,关于static,还是有很多需要注意的地方,总结一下吧: 首先,我们知道在c中,static的作用可以用来改变变量的生存期和作用域,函数的...
  • zpxly
  • zpxly
  • 2013年09月14日 10:28
  • 900

static修饰的变量与函数说明

static变量和static函数 static关键字有两种意思 1,表示变量是静态存储变量  表示变量存放在静态存储区.  2,表示该变量是内部连接  (这种情况是指该变量不在任何{}之内,就象全...

java static成员变量和成员函数

static成员变量 希望该类所有的对象共享同一个成员。此时就是 static 大显身手的时候了!! Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对...

static修饰的变量及函数

在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。 (1)先来介绍它的第一条也是最重要的一条:隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都...

C++类的const, static 和inline成员函数(变量)

在C++类的声明中包含多个函数或变量的声明或定义。这些函数和变量可以分为以下几类,这几类并不是完全没有交集的,常量成员函数可以是内联成员函数,内联成员函数也可以是常量成员函数: 普通成员函数和变量 ...

关于static函数的用法和全局变量在工程中的引用

就像我们熟知的那样,变量可以分全局的和局部的,函数也可以分全局的和局部的。比如说,在一个工程的common.h中定义了一个全局变量 int test;那么在整个工程的作用范围内,该变量都是存在的,在编...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:static函数和变量
举报原因:
原因补充:

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