VarPtr : What's it for?

BlitzMax Forums/BlitzMax Beginners Area/VarPtr : What's it for?

From a couple of days checking Bmax there is a shedload of stuff that my 'basic' background hasn't prepared me for.
(if anybody knows a good guide to pointers, methods, abstracts etc... I'd appreciate it).
However, I'm checking VarPtr and I'm surprised the example
returns 20 and not the address of the variable...
' few additions but basically the supplied code
Rem
Varptr returns the address of a variable in system memory.
End Rem
Local a:int
Local name:string
Local b:Int Ptr
Local p:string Ptr
a=10
name="Tony"
p=Varptr name
b=Varptr a
Print p[0]
Print b[0]

If varptr DOES return the variable value then what's it used for?