c语言中函数内静态变量 c语言函数中的静态变量

计算机C语言中“动态变量”和“静态变量”的区别是什么?

静态变量,就是在定义的时候,有static 修饰的变量,形式为

浉河网站建设公司创新互联建站,浉河网站设计制作,有大型网站制作公司丰富经验。已为浉河上千提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的浉河做网站的公司定做!

static TYPE var_name = init_value;

而动态变量,形式为

TYPE var_name = init_value;

即没有static 修饰。其中的=init_value均可省略。

区分定义在函数外的全局变量,和函数内的局部变量,作用域,生命周期,及无显式初始化时的初始值,均有区别。

1 动态全局变量:

作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量。

生命周期为从程序运行到程序退出,即贯穿整个运行时间。

无显式初始化时默认初始化值为0。

2 静态全局变量:

作用域为当前文件,从定义/声明位置到文件结尾。

生命周期为从程序运行到程序退出,即贯穿整个运行时间。

无显式初始化时默认初始化值为0。

3 动态局部变量:

作用域为当前函数,从定义位置,到其所在的{}的结束位置。

生命周期为从函数调用到函数退出。

无显式初始化时默认初始化值为随机值。

4 静态局部变量:

作用域为当前函数,从定义位置,到其所在的{}的结束位置。

生命周期为从程序运行到程序退出,即贯穿整个运行时间,当下次函数调用时,静态局部变量不会被再次初始化,而是沿用上次函数退出时的值。

无显式初始化时默认初始化值为0。

C语言中的静态变量

用static声明的变量是静态变量,比如static int a =4;这个a的初始值为4(仅仅是初始值),并且这个变量是一直存在的。

几个a并不是同一个a,我们可以把程序中的a改一下名字,方便理解。如下:

#include stdio.h

int fun(int n)

{

static int a =3;

int t =0;

if(n%2)

{

static int b =4;

t+=b++;

}

else

{static int c =5;

t+=c++;

}

return t+=a++;

}

main()

{

int i,s=0;

for (i=0;i3;i++)

s+=fun(i);

printf ("%d\n",s);

}

开始在稿纸上分析。

有关c语言函数静态变量

静态变量是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,

而且保存了前次被调用后留下的值。

第一个printf(

"%d\n",

func(k+=100)

);

k+=100,k就是200;

x++;

y++;

k++;

x=2,y=11,k=201;

所以第一次打印是214

第二个printf(

"%d\n",

func(k+=100)

);

k+=100,k就是300;

x++;

y++;

k++;

x=2,y=12,k=301;(y是静态变量,原值不变)

所以第二次打印是315

第三个printf(

"%d\n",

func(k+=100)

);

k+=100,k就是400;

x++;

y++;

k++;

x=2,y=13,k=401;(y是静态变量,原值不变)

所以第二次打印是416


网站标题:c语言中函数内静态变量 c语言函数中的静态变量
转载源于:http://myzitong.com/article/doiedhs.html