ToRawPointer

ToRawPointer[]

コンパイルされたコード内に外部ライブラリでの使用に適した新たなポインタオブジェクトを作成する.

ToRawPointer[val]

初期値 val を指す新たなオブジェクトを作成する.

ToRawPointer[p,val]

ポインタ pval を格納する.

ToRawPointer[array,offset,val]

指定のオフセットで"CArray" arrayval を格納する.

詳細

  • 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;

例題

すべて開くすべて閉じる

  (1)

整数へのポインタを作成し,次にこれを逆参照する:

スコープ  (2)

更新  (1)

ToRawPointerは,既存のポインタを更新することができる:

オフセット  (1)

ToRawPointerは,配列の異なる要素を割り当てることができる:

アプリケーション  (2)

ポインタを変更して結果を返すライブラリ関数を表す:

この関数を使うプログラムをコンパイルする:

"CArray"を合計するライブラリ関数を表す:

"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.

テキスト

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

BibTeX

@misc{reference.wolfram_2024_torawpointer, author="Wolfram Research", title="{ToRawPointer}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/ToRawPointer.html}", note=[Accessed: 05-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_torawpointer, organization={Wolfram Research}, title={ToRawPointer}, year={2022}, url={https://reference.wolfram.com/language/ref/ToRawPointer.html}, note=[Accessed: 05-November-2024 ]}