FreeBASIC マニュアルのトップに戻る

FreeBASIC 学習ノート 8.3 ポインターと配列

目次→教本→いっしょに学ぼうhttps://blog.csdn.net/rainheart311/article/details/78833455←オリジナル・サイト

学習ノート 8.3 ポインターと配列 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る


←前:8.2 ポインター型と操作 →次:8.4 ポインターと関数/手続き

配列は実際には連続したアドレス単位へのポインタと同じです。配列名はポインタと同等です。添え字はポインタのオフセットと同等です。
配列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


←前:8.2 ポインター型と操作 →次:8.4 ポインターと関数/手続き

いっしょに学ぼう に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2017-12-18 15:22:13
日本語翻訳:WATANABE Makoto、原文著作者:rainheart311

ホームページのトップに戻る

表示-非営利-継承