static变量static变量存储在哪里

static变量  时间:2021-07-05  阅读:()

静态变量static的作用

static关键字在C语言中用于声明一个静态的局部变量。

作用: 有时希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值,即其占用的存储单元不释放,在下一次再调用该函数时,该变量已有值(就是上一次函数调用结束时的值)。

这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明。

用静态存储要多占内存(长期占用不释放,而不能像动态存储那样一个存储单元可以先后为多个变量使用,节约内存),而且降低了程序的可读性,因此若非必要,不要多用静态局部变量。

静态变量是啥意思?和全局是一个概念吗

static变量意思是指在全局存储区中分配的变量,与全局变量是在一个存储区中分配的,区别于在堆栈中分配的变量 static变量仅仅在变量的作用范围内可见,而全局变量是在所有地方都可见的,这就是static变量与全局变量的区别 例如: int a; int func1() { static int b = 0; b++; return b; } int func2() { int c = 0; c++; return c; } int main() { a = 1; /* b = 1; */ printf("%d ", func1()); printf("%d ", func1()); printf("%d ", func2()); printf("%d ", func2()); } 其中a是全局变量,b是静态变量,而c是栈变量 a = 1;语句没有错 b = 1;出错,因为b只在函数func中可见 静态变量b从程序一运行即开始分配,到程序结束后才消失,而且static类型的变量只初始化一次,因此每运行func1一次,返回值就加1 而怎么运行func2返回值都是1,因为c每次都重新分配然后初始化为0 该程序的执行结果是 1 2 1 1

静态变量static是怎么回事,它能保存变量吗(举个例子)

static是分配在静态区中,初始值为0,在程序运行的时间内不会消失,同时保持上一次使用后的值不变

虽然变量始终存在,但其它程序还是不能引用它。

如下示例:

fun (int x)

{

static int a=3;

a+=x;

return a;

}

main()

{

int k=2,m=1,n;

n=fun(k);

printf("first : n=%d ",n);

n=fun(m);

printf("second :n=%d ",n);

}

static变量存储在哪里

该变量在全局数据区分配内存; 未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化); 静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;  静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。

对于一个完整的程序,在内存中的 代码区,全局数据区,堆区,栈区 一般程序的由new产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。

自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。

全局数据区的数据并不会因为函数的退出而释放空间。

细心的读者可能会发现,Example 1中的代码中将 static int n; //定义静态全局变量 改为 int n; //定义全局变量 程序照样正常运行。

的确,定义全局变量就可以实现变量在文件中的共享,但定义静态全局变量还有以下好处: 静态全局变量不能被其它文件所用; 其它文件中可以定义相同名字的变量,不会发生冲突;

无忧云(25元/月),国内BGP高防云服务器 2核2G5M

无忧云官网无忧云怎么样 无忧云服务器好不好 无忧云值不值得购买 无忧云,无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免北岸建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高...

VinaHost,越南vps,国内延时100MS;不限流量100Mbps

vinahost怎么样?vinahost是一家越南的主机商家,至今已经成13年了,企业运营,老牌商家,销售VPS、虚拟主机、域名、邮箱、独立服务器等,机房全部在越南,有Viettle和VNPT两个机房,其中VNPT机房中三网直连国内的机房,他家的产品优势就是100Mbps不限流量。目前,VinaHost商家发布了新的优惠,购买虚拟主机、邮箱、云服务器、VPS超过三个月都有赠送相应的时长,最高送半年...

VirMach(8元/月)KVM VPS,北美、欧洲

VirMach,成立于2014年的美国IDC商家,知名的低价便宜VPS销售商,支持支付宝、微信、PayPal等方式付款购买,主打美国、欧洲暑假中心产品,拥有包括洛杉矶、西雅图、圣何塞、凤凰城在内的11个数据中心可以选择,可以自由搭配1Gbps、2Gbps、10Gbps带宽端口,有Voxility DDoS高防IP可以选择(500Gbps以上的防御能力),并且支持在控制面板付费切换机房和更换IP(带...

static变量为你推荐
fcloseC语言fclose错误webcrack我用WebCrack4 在破解路由器密码的时候为什么在破解密码的中途自动关闭掉李昊天李昊天这名字给多少分索引超出了数组界限求助大神什么叫索引超出了数组界限vipjrvipjr怎么样?有真实体验的来说一下spawning在c语言编译时出现Error spawning cl.exe,是怎么回事?图片存储怎么设置图片的保存类型screencapture电脑qq问题:点击qq邮箱与空间,弹出Screen Capture Control 进入不了qq邮箱与空间,怎么解决?sungard上海sungard 中国区那家公司怎么样啊 谢谢建立qq号怎样建一个QQ号
欧洲欧洲vps 播放vps上的视频 Dedicated 圣迭戈 免备案空间 shopex空间 网站监控 500m空间 湖南服务器托管 免费全能主机 南通服务器 服务器硬件防火墙 shopex主机 无限流量 什么是web服务器 深圳域名 大化网 北京主机托管 hdroad hdsky 更多