在 Delphi 中, 几乎所有的类型都有对应的指针类型, 譬如: Char PChar Word PWORD Double PDouble TPoint PPoint 甚至一种类型对应这着几种指针类型, 譬如: Integer PInteger PINT WideChar PWideChar PWChar 即使它没有定义, 我也可以直接使用一个类型的指针, 譬如声明一个整数的指针变量: var px: ^Integer; 也可以先自定义指针类型, 再使用, 譬如: type MyIntPointer = ^Integer; var px: MyIntPointer; 看来声明指针类型还是挺方便, 但使用有点麻烦, 需要先申请内存!我们可以用以下三种方法, 为指针(譬如是一个 Double 类型的指针)去申请需要的内存:

var
  pd: PDouble;
begin
  New(pd);
  pd^ := 99.9;
  ShowMessage(FloatToStr(pd^)); {99.9}
  Dispose(pd);
end;

var
  pd: PDouble;
begin
  GetMem(pd, SizeOf(Double));
  pd^ := 99.9;
  ShowMessage(FloatToStr(pd^)); {99.9}
  FreeMem(pd);
end;

const
  size = SizeOf(Double);
var
  pd: PDouble;
begin
  pd := AllocMem(size);
  pd^ := 99.9;
  ShowMessageFmt('%p -> %g', [pd, pd^]); { 00AD0EC0 -> 99.9 }   ReallocMem(pd, * size);
  ShowMessageFmt('%p -> %g', [pd, pd^]); { 00AF5030 -> 99.9 }   pd := ReallocMemory(pd, * size);
  ShowMessageFmt('%p -> %g', [pd, pd^]); { 00A6B090 -> 99.9 }   FreeMem(pd);
end;

最新文章

  1. Linux下Steam中支持中文的办法
  2. 怎样记住Integer的最大值(有趣的思维和搞笑的回答)
  3. 【CodeVS 2822】爱在心中
  4. Android:单元测试Junit的配置
  5. Apache2 Axis2/C 搭建 hello world
  6. Android keyevent 中的各个值
  7. 读取.tmx地图
  8. 【Excel VBA】金额大写转换
  9. 关于JS 对象与JSON对象
  10. ActivityGroup简单介绍
  11. Ionic/Angularjs 知识点解析
  12. 二叉树终极教程--BinarySearchTree
  13. 带着新人学springboot的应用07(springboot+RabbitMQ 下)
  14. electron-vue:Vue.js 开发 Electron 桌面应用
  15. mapping values are not allowed in this context at line 115 column 10
  16. maven本地仓库中存在jar包,但编译不成功,显示jar包不存在
  17. Java基础篇--字符串处理(StringBuffer)
  18. pandas汇总和计算描述统计
  19. Java并发编程之final域的内存语义
  20. 雷林鹏分享:Ruby CGI 编程

热门文章

  1. Mingw opencv Windows下命令行运行
  2. 微信wap开发---页面自适应大小
  3. C++11 long long使用及输出
  4. assert用法总结
  5. 轮询、长轮询、长连接、websocket
  6. java 多线程阻塞队列 与 阻塞方法与和非阻塞方法
  7. js 轮播插件
  8. 观察者模式(Head First设计模式学习2)
  9. java安全性的一种简单思路
  10. 【C#】Event事件的订阅和发布