c语言中的static变量

int example(int a)

{

  int b = 0;

  static int c = 3;          

  b = b + 1;        //  b == 1, 1, 1

  c = c + 1;        //  c = 4, 5, 6

  return(a+b+c);    //   7, 8, 8  

}

静态变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。

以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。(如上例所示)

对于静态变量,若未赋初值,则编译时自动赋初值0(对数值型变量)或空字符(对字符型变量)。

时间: 2024-12-28 17:39:15

c语言中的static变量的相关文章

转:C语言中的static变量和C++静态数据成员(static member)

转自:C语言中的static变量和C++静态数据成员(static member) C语言中static的变量:1).static局部变量        a.静态局部变量在函数内定义,生存期为整个程序运行期间,但作用域与自动变量相同,只能在定义该变量的函数内使用.退出该函数后, 尽管该变量还继续存在,但不能使用它.        b.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值.而对自动变量不赋初值,则其值是不定的.2).static全局变量        全局变量本身就是静

C语言中的static关键字

在C语言中,"static"既可用于修饰函数,也可用于修饰变量,细细总结起来有以下几个功能: 1.static修饰函数.在工程中如果包含多个源文件,声明函数时加上static则表示仅将该函数的作用范围限定于本文件,对外部源文件是不可见的. 2.static修饰局部变量.一般而言,局部变量存储于动态存储区,如果局部变量加上static修饰,则将此局部存储于静态存储区,在程序的整个生命周期都有效. 3.static修饰全局变量.同1类似,如果工程中包含多个源文件,用static声明的全局变

[整理]C语言中的static静态对象

1.说明外部对象(静态外部变量和静态函数)    (1)static 用于说明外部变量或函数,使该对象的作用域限定为被编译原文件的剩余部分,即从对象说明开始到所在源文件的结束部分:    (2)被static说明的外部对象对于其他的源文件是隐藏的,也就是说其他源文件无法访问得到:    (3)不会和同一程序的其他源文件中的同名的外部对象发生命名冲突. 2.说明内部变量(静态内部变量)    (1)和自动变量一样,作用域为某个特定的函数:    (2)和自动变量不同的是,不管其所在的函数是否被调用

C语言中的static

原理 C语言中的static可用来改变变量的作用域和生存期以及函数的作用域,该关键字可以用来修饰函数的定义和声明,以及变量的定义. 用static修饰函数定义,表示该函数只在本文件有效(定义所在的文件),其它文件对该函数不可见. 用static修饰函数外的变量定义,表示该变量只在本文件有效(定义所在的文件),其它文件对该变量不可见. 用static修饰函数内的变量定义,表示该变量在多次函数调用间一直有效.它的作用域仍然是函数,但生存期是整个程序的生存期 用static修饰函数声明,表示该函数的定

C语言中的extern变量

C语言中的extern变量 extern变量是全局变量的扩充. 全局(global)变量 在任何一个函数之外声明的变量就是全局变量,全局变量可以被声明所在文件中的任何一个函数调用.全局变量只可以被定义一次. int globalVar globalVar定义为全局变量时,默认初值为0,并且系统为之分配相应的内存.现在,定义该变量的文件中的任意一个函数可以调用它. extern变量 假如你想要调用另外一个文件中的全局变量,如果你再声明一个同名的全局变量,那么编译器会因为重名报错,这个时候就要使用e

黑马程序员--C语言中的static

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1. 全局静态变量 在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量. 1. 内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在) 2. 初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化) 3. 作用域:全局静态变量在声明他的文件之外是不可见的.准确地讲从定义之处开始到文件结尾. 定义全局静态变量的好处: 不会

C语言中的static 详细分析

转自: http://blog.csdn.net/keyeagle/article/details/6708077 google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大.所以,我这篇博文博采众家之长,把互联网上的资料整合归类,并亲手编写程序验证之. C语言代码是以文件为单位来组织的,在一个源程序的所有源文件中,一个外部变量(注意不是局部变量)或者函数只能在一个源程序中定义一次,如果有重

C语言中的static 具体分析

google了近三页的关于C语言中static的内容,发现可用的信息非常少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的刚開始学习的人来说參考性不是非常大.所以,我这篇博文博採众家之长,把互联网上的资料整合归类,并亲手编敲代码验证之. C语言代码是以文件为单位来组织的,在一个源程序的全部源文件里,一个外部变量(注意不是局部变量)或者函数仅仅能在一个源程序中定义一次,假设有反复定义的话编译器就会报错.伴随着不同源文件变量和函数之间的相互引用以及相互独立的关系,产生了exter

C语言中,static关键字作用

static修饰变量 1 在块中使用static修饰变量 它具有静态存储持续时间.块范围和无链接. 即作用域只能在块中,无法被块外的程序调用:变量在程序加载时创建,在程序终止时结束. 它只在编译时初始化一次.如果没有显式初始化,默认初始化为0. #include <stdio.h> void trystat(void); int main(void) { int count; for (count = 1; count <= 3; count++) { printf("Here