Delphi中PointerMath指令

Type  
Switch  
Syntax  
{$POINTERMATH ON} or {$POINTERMATH OFF}  
Default  
{$POINTERMATH OFF}  
Scope  
Local  

在一些精确实例中,指针运算将任意给定的类型化指针当作一个可调整的序数,这样就可以直接对指针变量进行简单的算数运算。同样允许通过使用array[]运算符将指针变量当成无界数组。注意例子中所述,类型数组中索引的增加等同于指向类型的指针的增加。变动指针的增量是以数组元素之字节数作为尺寸大小,而非单个字节。

POINTMATH指令具有局部作用域。即是说,这个指令开关打开后而没有被关闭的情况,它的作用域将延伸到模块的结束处。也就是,在指令开的情况下声明的类型化指针,其所有类型变量是允许可调整指针运算和数组索引的,即使指令关闭亦然,在任何由该指令所包围的代码块中,任何类型化指针均允许作算数运算,不管类型化指针声明期间PointMath指令是否被打开。

该指令只影响类型化指针。而无类型指针变量却不允许这样做,这是因为无类型指针仅指向void元素,在尺寸上只是0字节。

无类型 var或const参数亦不受影响,因为它们根本就不是指针。

posted @ 2019-04-18 10:55  MasterQi  阅读(296)  评论(0编辑  收藏  举报