[fpc-pascal] IE 200307043
Frank Peelo
f26p at eircom.net
Tue May 26 00:57:19 CEST 2009
Prince Riley wrote:
> Hello,
>
> I had a chance to go to a reference and check on what the reserved word
> 'nil' , a special constant, seems to mean. According to the Object
> Pascal manual (Borland) ...
>
> "The reserved word nil is a special constant that can be assigned to any
> pointer. When nil is assigned to a pointer, the pointer doesn't
> reference anything."
>
> Since a pointer is a memory address value, then the interpretation of
> the statement "nil +1" would mean for p to point at the very next valid
> address above the lowest memory address 'p' can hold.
That is an "interesting" interpretation of "doesn't reference anything".
There is no guarantee that nil is address 0, although it may be so in
any available compiler -- at least, any compiler targetting an
architecture that does not have usable memory at address 0. Nil doesn't
point at anything. It's an undefined address.
> So it would
> appear that 'p := nil + 1' should not compile or work.
That would be reasonable - although if nil /was/ 0, then nil+1 would be
defined for any given pointer type, and a compiler /could/ make a stab
at compiling it -- but probably /should not/. Because what would "1 more
than undefined" mean?
FP
More information about the fpc-pascal
mailing list