Operator [] (Pointer Index)
Returns a reference to memory offset from an address
Syntax
`
Declare Operator [] ( ByRef lhs As T Pointer, ByRef rhs As Integer ) As T
`
Note that `Operator []` (Pointer index) returns a reference. See CompilerFAQ.
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 "`*(lhs + rhs)`"; both do exactly the same thing. Like pointer arithmetic, any type of `Pointer` can be indexed except for an `Any` `Pointer`. Also, like pointer arithmetic, it is up to the user to make sure meaningful data is being accessed.
When using 'nD' pointer (n indexes, with n > 1): Pt[I1][I2].....[In], the indexes order (from left to right) corresponds to the dereferencing order.
Example for '2D' pointer: Pt[I1][I2] = *(Pt[I1] + I2) = *(*(Pt + I1) + I2)
Example
`
'' 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
`
Will give the output,

    0 1 2 3 4

Differences from QB

- New to FreeBASIC

See also

- `Operator + (Add)`
- `Operator - (Subtract)`
- Pointer Operators