配列は実際には連続したアドレス単位へのポインタと同じです。配列名はポインタと同等です。添え字はポインタのオフセットと同等です。 配列a(1) がある場合、配列へのポインタは p です。実際、a(0) は *p、a(1) は *(p+1) です。 ポインタは、添え字 [] を使って、隣接する要素のメモリデータを参照できます。
例:1次元配列
'1 次元配列 Dim a(4) As Integer = { 0, 1, 2, 3, 4} '配列を定義 Dim p As Integer Ptr = @a(0) '配列a の最初の要素へのポインター(配列名を使うことでは最初のアドレスを取得できません) Print a(0),a(1),a(2),a(3),a(4) '() は配列への参照です Print p[0],p[1],p[2],p[3],p[4] '[] はポインターへの参照です Print *(p),*(p+1),*(p+2),*(p+3),*(p+4) 'ポインターはオフセットによっても参照できます Sleep
例:2次元配列
'2 次元配列を定義し、値を割り当てます(分かりやすい連続値を使用) Dim a(4,4) As Integer = _ { _ { 0, 1, 2, 3, 4}, _ { 5, 6, 7, 8, 9}, _ {10,11,12,13,14}, _ {15,16,17,18,19}, _ {20,21,22,23,24} _ } Dim p As Integer Ptr = @a(0,0) '配列a の最初の要素へのポインター(配列名を使って最初のアドレスを取得することはできません) Dim p1 As Integer Ptr = @a(1,0) Dim p2 As Integer Ptr = @a(2,0) Dim p3 As Integer Ptr = @a(3,0) Dim p4 As Integer Ptr = @a(4,0) Print a(0,0),a(1,0),a(2,0),a(3,0),a(4,0) '各行の最初の要素を取得 Print p[0],p[5+0],p[10+0],p[15+0],p[20+0] 'ポインターを使うと、1 次元配列として操作できます。各行のオフセットを計算します Print p[0],p1[0],p2[0],p3[0],p4[0] '各行のアドレスを直接取得することもできます。 Print *(p),*(p1),*(p2),*(p3),*(p4) sleep