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

鹤岗网站seo邵阳竞价网站建设设计

鹤岗网站seo,邵阳竞价网站建设设计,织梦 去掉我的网站,网站 手机验证码 实例5.5 什么是指针#xff1f; ​ 指针是 Object Pascal 语言的另一种基本数据类型。一些面向对象的语言在很大程度上隐藏了指针这种强大但危险的语言结构#xff0c;而 Object Pascal 则允许程序员在需要时使用指针#xff08;一般情况下并不经常使用#xff09;。 ​ 那么…5.5 什么是指针 ​ 指针是 Object Pascal 语言的另一种基本数据类型。一些面向对象的语言在很大程度上隐藏了指针这种强大但危险的语言结构而 Object Pascal 则允许程序员在需要时使用指针一般情况下并不经常使用。 ​ 那么什么是指针这个名字又从何而来呢与大多数其他数据类型不同的是指针并不保存实际值而是保存对变量的间接引用而变量反过来又有一个值。一种更专业的表述方式是指针类型定义了一个变量该变量持有给定数据类型或未定义类型的另一个变量的内存地址。 注解这是本书的一个高级章节放在这里是因为指针是 Object Pascal 语言的一部分应该成为任何开发人员的核心知识的一部分尽管指针不是一个基础的主题如果你是语言的新手你可能想在第一次阅读本书时跳过这一部分。同样你也有可能使用过没有显式指针的编程语言所以这一小部分可能是一次有趣的阅读。 ​ 指针类型的定义不是基于特定的关键字而是使用一个特殊符号—插入符^。例如你可以用下面的声明定义一个表示指向 Integer 类型变量的指针的类型 typeTPointerToInt ^Integer;​ 一旦您定义了指针变量可以使用 运算符将另一个变量的地址进行赋值给指针变量 varP: ^Integer;X: Integer; beginX : 10;P : X;// 使用指针更改X的值P^ : 20;Show(X: X.ToString);Show(P^: P^.ToString);Show(P: UIntPtr(P).ToHexString(8));​ 这段代码是 PointersTest 示例的一部分。在指针 P 指向变量 X 的情况下您可以使用 P^ 指向变量的值并读取或更改它。通过使用特殊类型 UIntPtr 将指针转换为数字还可以显示指针本身的值即 X 的内存地址更多信息请参阅下面的注释。代码没有显示简单的数值而是显示了十六进制表示法这在内存地址中更为常见。这就是输出结果指针地址可能取决于具体的编译 X: 20 P^: 20 P: 0018FC18警告只有在限制为 2GB 的 32 位平台上将指针转换为整数才是正确的。如果要使用更大的内存空间就必须使用 Cardinal 类型。对于 64 位平台更好的选择是使用 NativeUInt。不过这种类型有一个别名专门用于指针称为 UIntPtr它是这种情况下的最佳选择因为使用它可以向开发人员和编译器清楚地表明你的意图。 为了清晰起见让我总结一下。当您有一个指针 P 时 通过直接使用指针使用表达式 P可以引用指针所指向的内存的地址。通过解引用指针使用表达式 P^可以引用该内存位置的实际内容。 指针也可以不引用现有的内存位置而是引用通过 New 过程在堆上动态分配的新的特定内存块。在这种情况下当你不再需要指针访问的值时你也必须通过调用 Dispose 来删除动态分配的内存。 注解内存管理和堆的工作方式在第13章中有详细介绍。简而言之堆是一块很大的内存区域在堆中你不用按指定顺序分配和释放内存块。除了 New 和 Dispose 之外还可以使用 GetMem 和 FreeMem它们要求开发人员提供分配的大小而在 New 和 Dispose 的情况下编译器会自动确定分配的大小。在编译时不知道分配大小的情况下、 GetMem 和 FreeMem 就变得非常方便。 下面是一段动态分配内存的代码片段 varP: ^Integer; begin// 初始化New(P);// 操作P^ : 20;Show(P^.ToString);// 终止Dispose(P);如果在使用内存后为释放程序最终可能会耗尽所有可用内存并崩溃。未释放不再需要的内存被称为内存泄漏。 警告为了更安全起见上面的代码实际上应该使用 try-finally 块我决定在本书的这个部分不介绍这个主题但我会在后面的第 9 章中介绍。 如果指针没有值可以为其赋值为 nil。您可以通过直接相等测试或使用 Assigned 函数如下所示来测试指针是否为 nil以确定它当前是否指向某个值。 这种测试经常使用因为解引用无效指针会导致内存访问违规根据操作系统的不同影响也略有不同 varP: ^Integer; beginP : nil;Show(P^.ToString);您可以通过运行PointersTest示例来查看代码的运行效果。您将看到的错误在Windows上应该类似于 Access violation at address 0080B14E in module PointersTest.exe. Read of address 00000000.使指针数据访问更安全的方法之一是添加 指针不为空 安全检查例如下面的方法 if P nil thenShow(P^.ToString);正如我前面提到的出于可读性的考虑另一种通常更可取的方法是使用 Assigned 伪函数 if Assigned(P) thenWriteln(P^.ToString);注解 Assigned 并不是一个真正的函数因为它是由编译器 解析 并生成正确代码的。此外它还可以用于过程类型变量或方法引用而不实际调用它只是检查它是否被赋值。 ​ Object Pascal 还定义了指针数据类型它表示无类型的指针如 C 语言中的 void*。如果使用无类型指针则应使用 GetMem 而不是 New并指出要分配的字节数因为从类型本身无法推断出该值。每次分配的内存变量大小未定义时都需要使用 GetMem 过程。 ​ 在 Object Pascal 中很少需要指针这是该语言的一个有趣的优点。不过指针功能在实现一些极其高效的底层函数和调用操作系统的 API 时还是有所帮助的。无论如何了解指针对于高级编程和全面理解 Delphi 的对象模型在幕后使用指针通常称为引用都非常重要。 警告 当一个变量持有指向第二个变量的指针而第二个变量离开作用域或被释放如果是动态分配时指针将指向未定义或持有其他数据的内存位置。这会导致很难发现的错误。
http://www.zqtcl.cn/news/316605/

相关文章:

  • 管理信息系统与网站建设有什么区别python版wordpress
  • 济南市建设行政主管部门网站公众号登录入口官网
  • 深圳苏州企业网站建设服务企业做网站需要什么条件
  • 电脑什么网站可以做长图攻略公众号 微网站开发
  • 网站核检单怎么用小皮创建网站
  • 企业网站托管平台有哪些烟台高新区建设局网站
  • 石家庄网站做网站和县网页定制
  • 网站个人备案和企业备案潍坊公司注册网站
  • 建个网站的流程互联网裁员
  • 设置网站模板汉口网站建设公司
  • 网站对一个关键词做排名怎么做网站建设 图纸网
  • 什么网站比较吸引流量网页设计代码td
  • 克隆网站怎么做后台wordpress网站缩
  • 仁怀哪儿做网站泰安市建设局
  • 做网站和编程有关系吗手机怎么做电子书下载网站
  • 网站做关键词排名网站快速排名的方法
  • 有网站模板如何预览泉州app开发
  • 网站自助建站系统重庆皇华建设集团有限公司网站
  • 云速成美站做网站好吗汕头制作网站
  • 搜狗搜索网站提交入口在哪里做卖车网站
  • 河南省百城建设提质网站新人怎么做电商
  • 建设机械网站制作创建个人网站教案
  • 无锡网站推广装修风格大全2023新款
  • 在线设计logo免费网站如何在网站上添加qq
  • 高端网站建设哪里好网站建设与管理案例教程
  • 云南专业网站建设上海百度移动关键词排名优化
  • 如何搭建一个完整的网站wordpress 小程序开发
  • 外贸网站建设关键点为网站网站做代理被判缓刑
  • 网站免费正能量小说台州百度关键词优化
  • 保定自助建站做静态网站