ToRawPointer
コンパイルされたコード内に外部ライブラリでの使用に適した新たなポインタオブジェクトを作成する.
ToRawPointer[val]
初期値 val を指す新たなオブジェクトを作成する.
ToRawPointer[p,val]
ポインタ p に val を格納する.
ToRawPointer[array,offset,val]
指定のオフセットで"CArray" array に val を格納する.
詳細
- ToRawPointerはコンパイルされたコードでしか使えない.
- ToRawPointerはスタックにメモリを割り当てる.
- ToRawPointerが生成したポインタは,これを生成した関数が戻ると無効になる.
- FromRawPointerを使ってToRawPointerが生成したポインタの値が抽出できる.
- ToRawPointer[val]は val のコピーを作成し,そのアドレスを返す.コピーの変化は val には影響せず,逆もまた真である.
- ToRawPointer[array,offset,val]は,要素を配列に格納することができる.
- ToRawPointerの用法は,Cにおける以下とほぼ等しい.
-
p=ToRawPointer[] int x; int* p = &x; p=ToRawPointer[val] int x = val; int* p = &x; ToRawPointer[p,val] *p = val; ToRawPointer[array,offset,val] array[offset] = val; または *(array+offset) = val;
例題
すべて開くすべて閉じるスコープ (2)
更新 (1)
ToRawPointerは,既存のポインタを更新することができる:
オフセット (1)
ToRawPointerは,配列の異なる要素を割り当てることができる:
アプリケーション (2)
"sumArray"に渡せるように,ToRawPointerを使って"CArray"に入力するプログラムをコンパイルする:
考えられる問題 (2)
ToRawPointer[val]は val のコピーへのポインタを作成するので,ポインタを変更する関数はもとの val は変更しない.
変数でポインタを初期化し,ポインタを変更する関数を呼び出し,もとの値を戻すプログラムをコンパイルする:
ToRawPointer[n]は n のコピーへのポインタを作成し,incrementInputはポインタが参照した値しか変更しないので,n は変更されない:
ToRawPointerが生成したポインタは,ポインタを生成した関数が返されると無効になる.無効になったポインタを使うとクラッシュすることがある.
無効なポインタに対してFromRawPointerを呼び出す関数をコンパイルするとクラッシュすることがある:
テキスト
Wolfram Research (2022), ToRawPointer, Wolfram言語関数, https://reference.wolfram.com/language/ref/ToRawPointer.html.
CMS
Wolfram Language. 2022. "ToRawPointer." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/ToRawPointer.html.
APA
Wolfram Language. (2022). ToRawPointer. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ToRawPointer.html