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; //定义全局变量 程序照样正常运行。

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

10gbiz七月活动首月半价$2.36/月: 香港/洛杉矶CN2 GIA VPS

10gbiz怎么样?10gbiz 美国万兆带宽供应商,主打美国直连大带宽,真实硬防。除美国外还提供线路非常优质的香港、日本等数据中心可供选择,全部机房均支持增加独立硬防。洛杉矶特色线路去程三网直连(电信、联通、移动)回程CN2 GIA优化,全天低延迟。中国大陆访问质量优秀,最多可增加至600G硬防。香港七星级网络,去程回程均为电信CN2 GIA+联通+移动,大陆访问相较其他香港GIA线路平均速度更...

CloudServer:$4/月KVM-2GB/50GB/5TB/三个数据中心

CloudServer是一家新的VPS主机商,成立了差不多9个月吧,提供基于KVM架构的VPS主机,支持Linux或者Windows操作系统,数据中心在美国纽约、洛杉矶和芝加哥机房,都是ColoCrossing的机器。目前商家在LEB提供了几款特价套餐,最低月付4美元(或者$23.88/年),购买更高级别套餐还能三个月费用使用6个月,等于前半年五折了。下面列出几款特别套餐配置信息。CPU:1cor...

inux国外美老牌PhotonVPS月$2.5 ,Linux系统首月半价

PhotonVPS 服务商我们是不是已经很久没有见过?曾经也是相当的火爆的,我们中文习惯称作为饭桶VPS主机商。翻看之前的文章,在2015年之前也有较多商家的活动分享的,这几年由于服务商太多,乃至于有一些老牌的服务商都逐渐淡忘。这不有看到PhotonVPS商家发布促销活动。PhotonVPS 商家七月份推出首月半价Linux系统VPS主机,首月低至2.5美元,有洛杉矶、达拉斯、阿什本机房,除提供普...

static变量为你推荐
抓包什么是"抓包"?怎样"抓包"?0x80070005计划任务时出现错误代码80070005fcloseC语言文件关闭函数fclose(文件指针)是什么?qq号查询怎样查找本地qq号码spawning在c语言编译时出现Error spawning cl.exe,是怎么回事?ruby语言Ruby语言输入方法法思科网络工程师思科网络工程师 好考么网站免费收录免费个人网站能给百度收录吗科来网络分析网络流量,科来网络分析系统可以监控吗?工作日志系统工作记录软件有哪些
云服务器租用 域名网 汉邦高科域名注册 plesk 台湾服务器 韩国加速器 163网 美国主机代购 shopex空间 光棍节日志 NetSpeeder 免费个人博客 湖南服务器托管 howfile linux使用教程 根服务器 空间首页登陆 starry 国外网页代理 电信主机托管 更多