3.5 Pointer Types
Corresponds to Racket “C pointer” objects.  These pointers can have
an arbitrary Racket object attached as a type tag.  The tag is ignored
by built-in functionality; it is intended to be used by interfaces.
See 
Tagged C Pointer Types for creating pointer types that
use these tags for safety. A 
#f value is converted to
NULL and vice versa.
The address referenced by a _pointer value must not refer to
memory managed by the garbage collector (unless the address
corresponds to a value that supports interior pointers and that is
otherwise referenced to preserve the value from garbage collection).
The reference is not traced or updated by the garbage collector.
The equal? predicate equates C pointers (including pointers
for _gcpointer and possibly containing an offset) when they
refer to the same address.
Like 
_pointer, but for a value that can refer to memory
managed by the garbage collector.
Although a _gcpointer can reference to memory that is not
managed by the garbage collector, beware of using an address that
might eventually become managed by the garbage collector. For example,
if a reference is created by malloc with 'raw and
released by free, then the free may allow the memory
formerly occupied by the reference to be used later by the garbage
collector.
A type that can be used with any Racket object; it corresponds to the
Scheme_Object* type of Racket’s C API (see
Inside: Racket C API).  It is useful only for libraries that are aware of
Racket’s C API.
Similar to 
_pointer, except that when an 
_fpointer
is extracted from a pointer produced by 
ffi-obj-ref, then a
level of indirection is skipped. A level of indirection is similarly
skipped when extracting a pointer via 
get-ffi-obj. Like
_pointer, 
_fpointer treats 
#f as 
NULL
and vice versa.
A type generated by _cprocedure builds on _fpointer,
and normally _cprocedure should be used instead of
_fpointer.
Creates a type that is like 
ctype, but 
#f is
converted to 
NULL and vice versa. The given 
ctype must
have the same C representation as 
_pointer,
_gcpointer, or 
_fpointer.
Creates a type that is like 
ctype, but whose base
representation is like 
_gcpointer instead of
_pointer. The given 
ctype must have a base
representation like 
_pointer or 
_gcpointer (and in
the later case, the result is the 
ctype).