Operator [] (Pointer Index)
Returns a reference to memory offset from an address
result = lhs [ rhs ]
lhs
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 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.
This operator can be overloaded for user-defined types.
Will give the output,
Syntax
Usage
result = lhs [ rhs ]
Parameters
lhs
The base address.
rhsA signed offset from lhs.
TAny 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 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.
This operator can be overloaded for user-defined types.
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
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