mwfd.net
当前位置:首页 >> C中的静态变量 >>

C中的静态变量

用static声明的变量是静态变量,比如static int a =4;这个a的初始值为4(仅仅是初始值),并且这个变量是一直存在的.几个a并不是同一个a,我们可以把程序中的a改一下名字,方便理解.如下:#include <stdio.h> int fun(int n) { static int a =3;

静态变量的类型说明符是static. 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量, 例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量. 对于自动变量,它属于动态存储方式. 但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式. 由此看来,一个变量可由static进行再说明,并改变其原有的存储方式.

你可以运行以下程序.在后面再叫上:printf(%d%d,&j &i); 静态变量是 在各个的模块的前面 定义的 在各个模块中不受加减 也就是 静态变量的值不变.这也是静态变量和其他变量最明显的区别.

全局变量声明之前加上static,就是静态全局变量.全局变量和静态全局变量都是静态存储的;在存储上无区别.区别在于他们的作用域;全局变量的作用域是整个源程序,当源程序有多个源文件组成时,全局变量在各个源程序文件都是有效的;而静态全局变量怎被限制了作用域,只在定义该变量的源文件内有用在同一程序的其他源文件不能使用!还有静态全局变量只初始化一次,防止在其他源文件调用!而全局变量可以再其他源文件初始化!!

静态外部变量只限于本文件范围内有效,不能被其他文件引用.静态局部变量只能被定义变量所在的函数引用,且每次调用此函数结束时静态局部变量值保留,作为下次调用此函数时该变量的初值.C基础很重要,请认真研读

#include"stdio.h"void main(){ int f(int); int a=2,i; for(i=0;i&lt;3;i++) printf("%d ",f(a));}int f(int a){ auto int b=0; //aubo为自动变量的标志,则b为自动变量 static int c=3;//static 为静态局部变量的标志,则c为静态局部变量 b=b+1; //b为自动变量,则

static c = 3; 只初始化一次,后面再使用c就是用上次f()返回后c的结果 所以当i=0时,f()中a=2,c初始化为3,c=c+1后c=4,返回a+c=4+2=6.返回后c保持为4 当i=1时,f()中a=2,c初始值为上次返回后的结果4,从而c=c+1=5,函数返回a+c=2+5=7.返回后c保持为5.当i=2时类似

静态变量就是用了 static 的,啥类型都可以

static关键字在C语言中用于声明一个静态的局部变量.作用:有时希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值,即其占用的存储单元不释放,在下一次再调用该函数时,该变量已有值(就是上一次函数调用结束时的值).这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明.用静态存储要多占内存(长期占用不释放,而不能像动态存储那样一个存储单元可以先后为多个变量使用,节约内存),而且降低了程序的可读性,因此若非必要,不要多用静态局部变量.

动态变量和静态变量定义和区别如下:1、定义上,静态变量比动态变量多一个关键字static,比如:动态变量:int i; 静态变量:static int i;2、动态变量在子程序中,每次调用时都会从零开始,不会保留原有数据,静态变量调用时原有值不会发生改变,比如:main() { int i; for(i=0;i<5;i++)fun();//fun1(); } void fun() //输出结果为11111 { int j; j++; printf("%d",j); } void fun1() //输出结果为12345 { static int j; j++; printf("%d",j); }

wlbx.net | bnds.net | ydzf.net | zxwg.net | fpbl.net | 网站首页 | 网站地图
All rights reserved Powered by www.mwfd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com