当前位置: 首页 > news >正文

中国建设网站用户名网站开发人员 怎么保存

中国建设网站用户名,网站开发人员 怎么保存,谢岗网站建设,wordpress迁移域名修改文章目录 1. 自动变量#xff08;auto#xff09;1.1 自动变量的初始化 2. 静态变量#xff08;static#xff09;2.1 静态变量的初始化 3. 寄存器变量#xff08;register#xff09; 1. 自动变量#xff08;auto#xff09; 在代码块内部声明的变量的缺省存储类型是… 文章目录 1. 自动变量auto1.1 自动变量的初始化 2. 静态变量static2.1 静态变量的初始化 3. 寄存器变量register 1. 自动变量auto 在代码块内部声明的变量的缺省存储类型是自动的(automatic)也就是说它存储于堆栈中称为自动(auto)变量。关键字auto就是用于修饰这种存储类型的但它极少使用因为代码块中的变量在缺省情况下就是自动变量。 在程序执行到声明自动变量的代码块时自动变量才被创建当程序的执行流离开该代码块时这些自动变量便自行销毁。如果该代码块被数次执行例如一个函数被反复调用这些自动变量每次都将重新创建。在代码块再次执行时这些自动变量在堆栈中所占据的内存位置有可能和原先的位置相同也可能不同。即使它们所占据的位置相同你也不能保证这块内存同时不会有其他的用途。 因此我们可以说自动变量在代码块执行完毕后就消失。当代码块再次执行时它们的值一般并不是上次执行时的值。 举一个例子这个例子来自于Linux C编程一站式学习-全局变量、局部变量和作用域 #include stdio.h void foo(void) {int i;printf(%d\n, i);i 777; }int main(void) { foo(); foo(); return 0; }打印结果 第二次调用打印的i值正是第一次调用末尾赋给i的值777? 改写一下中间加一个打印’hello’的语句。 int main(void) {foo();printf(hello\n);foo();return 0; }结果是 第二次调用foo打印的i值又不是777了而是0“局部变量的存储空间在每次函数调用时分配在函数返回时释放” 所以每一次函数的调用都是重新为自动变量分配内存的。 1.1 自动变量的初始化 自动变量的初始化需要更多的开销因为当程序链接时还无法判断自动变量的存储位置。事实上函数的局部变量在函数的每次调用中可能占据不同的位置。基于这个理由自动变量没有缺省的初始值而显式的初始化将在代码块的起始处插入一条隐式的赋值语句。这导致了 自动变量的初始化较之赋值语句效率并无提高除了声明为const的变量之外在声明变量的同时进行初始化和先声明后赋值只有风格之差并无效率之别隐式的赋值语句使自动变量在程序执行到它们所声明的函数或代码块时每次都将重新初始化关于隐式赋值和显式赋值可以参考这个文章关于编程语言中的显式\隐式初始化优点由于初始化在运行时执行你可以用任何表达式作为初始化值除非你对自动变量进行显式的初始化否则当自动变量创建时它们的值总是垃圾。 2. 静态变量static 变量的缺省存储类型取决于它的声明位置。凡是在任何代码块之外声明的变量总是存储于静态内存中也就是不属于堆栈的内存这类变量称为静态(static)变量。 对于这类变量无法为它们指定其他存储类型。静态变量在程序运行之前创建在程序的整个执行期间始终存在。它始终保持原先的值除非给它赋一个不同的值或者程序结束。 对于在代码块内部声明的变量如果给它加上关键字static可以使它的存储类型从自动变为静态。注意修改变量的存储类型并不表示修改该变量的作用域它仍然只能在该代码块内部按名字访问。函数的形式参数不能声明为静态因为实参总是在堆栈中传递给函数用于支持递归。 2.1 静态变量的初始化 在静态变量的初始化中我们可以把可执行程序文件想要初始化的值放在当程序执行时变量将会使用的位置。当可执行文件载入到内存时这个已经保存了正确初始值的位置将赋值给那个变量。完成这个任务并不需要额外的时间也不需要额外的指令变量将会得到正确的值。如果不显式地指定其初始值静态变量将初始化为0。 3. 寄存器变量register 关键字register可以用于自动变量的声明提示它们应该存储于机器的硬件寄存器而不是内存中这类变量称为寄存器变量。通常寄存器变量比存储于内存的变量访问起来效率更高。但是编译器并不一定要理睬register关键字如果有太多的变量被声明为register它只选取前几个实际存储于寄存器中其余的就按普通自动变量处理。如果一个编译器自己具有一套寄存器优化方 法它也可能忽略register关键字其依据是由编译器决定哪些变量存储于寄存器中比人脑的决定更为合理一些。 在典型情况下你希望把使用频率最高的那些变量声明为寄存器变量。在有些计算机中如果把指针声明为寄存器变量程序的效率将能得到提高尤其是那些频繁执行间接访问操作的指针。你可以把函数的形式参数声明为寄存器变量编译器会在函数的起始位置生成指令把这些值从堆栈复制到寄存器中。但是完全有可能这个优化措施所节省的时间和空间的开销还抵不上复制这几个值所用的开销。 寄存器变量的创建和销毁时间和自动变量相同但它需要一些额外的工作。在一个使用寄存器变量的函数返回之前这些寄存器先前存储的值必须恢复确保调用者的寄存器变量未被破坏。许多机器使用运行时堆栈来完成这个任务。当函数开始执行时它把需要使用的所有寄存器的内容都保存到堆栈中当函数返回时这些值再复制回寄存器中。 在许多机器的硬件实现中并不为寄存器指定地址。同样由于寄存器值的保存和恢复某个特定的寄存器在不同的时刻所保存的值不一定相同。基于这些理由机器并不向你提供寄存器变量的地址。
http://www.hkea.cn/news/14540948/

相关文章:

  • 网站开发招聘需要python抓取更新wordpress
  • 做彩平的材质网站企业微信scrm系统源码
  • 云主机做网站域名打不开wordpress主题框架
  • 北京网站优化推广效果网站建设系统改版
  • 网站备案 icp备案免费推广中文黄页网
  • 长安高端装备网站设计公司局域网聊天工具排行
  • 松岗建设网站织梦网站怎样做百度主动推送
  • 个人博客网站实验报告网站建设教程 冰美人视频
  • 企业网站如何做自然搜索潍坊市网站建设
  • 嘉兴 做网站 推广wordpress 瀑布流分页
  • 网投怎么做网站wap网站开发框架
  • 网站域名需要交费吗wordpress主题安装报错
  • 深圳鹏洲建设工程有限公司网站平台景观设计效果图
  • 建设自己的网站wordpress 拼音插件
  • 营销网站建设套餐seo免费优化软件
  • 怎么样才能让百度收录自己的网站手机seo排名
  • 移动网站开发课程设计做视频的免费软件有哪些
  • 单页网站编辑器微信商户平台入口
  • 做网站需要写那些xmind宁都网站建设
  • 花都五屏网站建设影视广告公司网页设计
  • 做资金盘 互助盘的网站怎么阐述自己做的网站
  • 网站开发和微信开发需要什么人百度智能云
  • 深圳罗湖企业网站推广北京网页设计公司有哪些
  • 做网站的报价方案渭南建网站
  • ps做网站分辨率自适应市场调研公司成功案例
  • 网站一般几年网络建设专业石家庄
  • 合肥有哪些公司是做网站的微页制作平台网站建设
  • 四川省住房和城乡建设厅官方网站白帽seo
  • 我做百度_上面有手机网站的_为什么还要做手机网站中国建筑有几个工程局
  • 渭南市网站建设佛山顺德网站制作公司