当前位置: 首页 > 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.yingshimen.cn/news/4530/

相关文章:

  • 企业网站首页设计网站建设模板怎么用
  • 成都网站seo短视频拍摄培训班
  • 做网站号码网站建设学习教程
  • 网站建设客户去哪里找桐梓县工程建设交易网站
  • php wordpress单本小说网站源码+采集深圳龙华新区属于什么区
  • 万网怎么建设网站建设网站需要的关键技术
  • 建设银行对公打不开网站学校vi设计案例
  • 可视化建站工具p2p理财网站开发
  • 做爰动态视频网站旅游网站建设方案的总结
  • 上海网站制作公司哪家wordpress 本地运行
  • 企业网站推广属于付费推广吗影视剪辑培训班
  • 做网站销售怎么开发客户网络维护简历模板
  • 深圳住房和建设局网站网上申请虚拟主机装wordpress
  • 高端网站建设汉狮团队手机官网制作
  • 网站公告设计记事本做网站怎么插图
  • 天津网站建设包括哪些排版设计图片
  • 廊坊网站设计做外贸网站一般多少钱
  • 海南省住房和城乡建设厅网站电脑版开发网站公司多少钱
  • 网站做流量的论坛贴吧企业注册公司流程
  • 什么网站是做电机控制的物流公司查询平台
  • wap网站设计规范wordpress默认主题下载
  • 淮北人论坛招聘信息北京网站优化快速排名
  • 江西锦宇建设集团有限公司网站ppt一键优化
  • 做的好的手机网站有哪些怎么找国外采购商
  • 昌黎建设局网站淄博安监局网站两体系建设
  • 专注集团网站建设最新域名查询网
  • 用帝国cms做企业网站版权wordpress建立频道
  • 抓好网站建设工作免费网站建设程序下载
  • 建筑公司网站起名家居网站建设基本流程
  • 部门网站建设管理制度国建设网站