Julia 学習:ポインタ操作

2015-10-09 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
6、2、1、0、0、 1、0、0、0、0(41)で、換算ポイント 83pt 。
「Firefox」が4位にアップも、今朝方一気に6位にダウン。
「化学業界」「硝子業界」「グルコサミン」「e-radio」「FM COCOLO」bg値変動。
「C言語」「Perl」「Python」「FM青森」は全く変化無し。
・-・ - -・

さて、本文。

前回(2015-10-06)の記事:「Julia 学習:ディレクトリ操作とか
に続いて「Julia 学習」。

ポインタ操作について。


参照するバイブルは:「本家サイトの Docs ページ


Standard Library」の
C Interface
には、

  pointer(a[, index])

   Get the native address of an array or string element.
   Be careful to ensure that a julia reference to a exists
    as long as this pointer will be used.


  pointer(type, int)

   Convert an integer to a pointer of the specified element type.


  pointer_to_array(p, dims[, own])

   Wrap a native pointer as a Julia Array object.
   The pointer element type determines the array element type.
   own optionally specifies whether Julia should take
    ownership of the memory, calling free on the pointer when
    the array is no longer referenced.


などとある。


そこで、
(1)要素が6つの整数(Int32)型配列 x を定義
(2)配列 x の先頭アドレスをポインタ(Ptr{Int32}型) p に格納
(3)ポインタ p をポインタ q に代入(これはPtr{Int64}型)
(4)ポインタ q で3要素の配列 y を定義(これは整数(Int64)型配列)
(5)配列 y の2番目の要素を32ビット右シフトしたものを表示
とするには、
x = [1,2,3,4,5,6]            # Int32 * 6
p = pointer( x, 1 ) # Ptr{Int32}
q = pointer( Int64, p ) # Ptr{Int64} Redefine
y = pointer_to_array( q, 3 ) # Int64 * 3
println( y[2] >> 32 ) # == 4

しかし、
「q = pointer( Int64, p )」で警告が出る:
WARNING: deprecated, use convert(Ptr{T},x) instead
deprecated = 廃止される可能性がある

なので、
3行目を書き換えた。
x = [1,2,3,4,5,6]            # Int32 * 6
p = pointer( x ) # Ptr{Int32}
q = convert( Ptr{Int64}, p ) # ***************
y = pointer_to_array( q, 3 ) # Int64 * 3
println( y[2] >> 32 ) # == 4


これで、同一アドレス領域を別々の型で参照できる!


尚、p も、q も使わないで済ますなら、
x = [1,2,3,4,5,6]            # Int32 * 6
y = pointer_to_array(convert(Ptr{Int64},pointer(x)),3)
println( y[2] >> 32 ) # == 4

と成るのかな?


本日はここまで。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


150917
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク