Revision [17384]
This is an old revision of KeyPgOpPtrIndex made by CountingPine on 2014-11-26 11:08:56.
Operator [] (Pointer index)
Returns a reference to memory offset from an address
Syntax:
KeyPgDeclare declare KeyPgOperator operator [] ( KeyPgByref byref lhs KeyPgAs as T KeyPgPointer pointer, KeyPgByref byref rhs KeyPgAs as KeyPgInteger integer ) KeyPgByrefFunction byref KeyPgAs as T
Usage:
result = lhs [ rhs ]
Parameters:
lhs
The base address.
rhs
A signed offset from lhs.
T
Any data type.
Description:
This operator returns a reference to a value some distance in memory from a base address. It is essentially shorthand for "KeyPgOpValueOf *(lhs KeyPgOpAdd + rhs)"; both do exactly the same thing. Like pointer arithmetic, any type of KeyPgPointer Pointer can be indexed except for an KeyPgAny Any KeyPgPointer Pointer. Also, like pointer arithmetic, it is up to the user to make sure meaningful data is being accessed.
When indexing a '2-dimensional' pointer (i.e. a T Ptr Ptr), the first (leftmost) index is applied before the second: For example, Pt[I1][I2] = *(Pt[I1] + I2) = *(*(Pt + I1) + I2)
In general, when using an 'n-dimensional' pointer: Pt[I1][I2].....[In], the index order (from left to right) corresponds to the dereferencing order.
In general, when using an 'n-dimensional' pointer: Pt[I1][I2].....[In], the index order (from left to right) corresponds to the dereferencing order.
This operator can be overloaded for user-defined types.
Examples:
'' initialize a 5-element array
Dim array(4) As Integer = { 0, 1, 2, 3, 4 }
'' point to the first element
Dim p As Integer Ptr = @array(0)
'' use pointer indexing to output array elements
For index As Integer = 0 To 4
Print p[index];
Next
Print
Dim array(4) As Integer = { 0, 1, 2, 3, 4 }
'' point to the first element
Dim p As Integer Ptr = @array(0)
'' use pointer indexing to output array elements
For index As Integer = 0 To 4
Print p[index];
Next
Will give the output,
0 1 2 3 4
Differences from QB:
- New to FreeBASIC
See also:
- ProPgPtrArithmetic Pointer Arithmetic
- KeyPgOpValueOf Operator * (Value of)
- Operator [] (String index)
- KeyPgOpArrayIndex Operator () (Array index)
- KeyPgOpAdd Operator + (Add)
- KeyPgOpSubtract Operator - (Subtract)
- CatPgOpPoint Pointer Operators
Back to Indexing Operators
Back to Operators