[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