(Pointer | Ptr)

A variable declaration type modifier

Syntax
	... KeyPgAsAs DataTypeDataType {Pointer | Ptr}

Description
	Declares a pointer variable.
	The variable type can be a predefined type or a user-defined type.

	KeyPgOpAtOperator @ (Address Of) operator or KeyPgOpVarptrVarPtr are used to take the address 
	of a variable. The KeyPgOpValueOfOperator * (Value Of) operator is used to dereference 
	the pointer, that is, access the actual value stored in the memory 
	location the pointer is pointing at.

Example
	' Create the pointer.
	Dim p As Integer Ptr

	' Create an integer value that we will point to using pointer "p"
	Dim num As Integer = 98845

	' Point p towards the memory address that variable "num" occupies.
	p = @num

	' Print the value stored in memory pointed to by pointer "p"
	Print "Pointer 'p' ="; *p
	Print 

	' Print the actual location in memory that pointer "p" points at.
	Print "Pointer 'p' points to memory location:"
	Print p

	Dim p As ZString Pointer
	Dim text As String
	text = "Hello World!"
	p = StrPtr(text) + 6
	Print text
	Print *p

	'' Output:
	'' Hello World!
	'' World!

	Type mytype
	   a As Integer = 12345
	End Type

	Dim As mytype mt

	Dim As mytype Ptr pmt
	pmt = @mt

	Print (*pmt).a  '' or Print pmt->a

	'' Output:
	'' 12345

Dialect Differences
	* Not available in the CompilerOptlang-lang qb dialect unless referenced with the 
	  alias __Pointer or __Ptr.

Differences from QB
	* New to FreeBASIC

See also
	* KeyPgAllocateAllocate

