FreeBASIC Cptr
目次→言語リファレンス→変数とデータ型→データ型を変換→CPTR←オリジナル・サイト
ポインタ表現を、指定されたデータ型ポインタに変換します。
構文:
Cptr( PointerDataType, expression )
記述:
expression(表現)を、PointerDataType に変換します。
- 注意:
現在、FBは、実は、PointerDataType がポインターであることを、強要しません。
これは、しかし将来のバージョンでたぶん変わります。
現在、任意の変換型に対して、-w pedantic コンパイラ・スイッチでコンパイルした場合、非ポインタに変換しようとすると、警告が表示されることがあります。
例:
Dim intval
As Integer
Dim intptr
As Integer Ptr
intval = &h0080
intptr =
@intval
'' -128 と 128 が表示されます。最初の表現は、符号付きのバイトとして "seen" 「見られ」ます。
Print *
CPtr( Byte Ptr, intptr
), *intptr
Sleep
by fxm ≫ Nov 03, 2023 14:26
https://www.freebasic.net/forum/viewtopic.php?p=301040#p301040
1) 文字列記述子へのポインタから文字列の文字データを取得するには、適切な型付きポインタを使う必要があります( 'Any Ptr'ではありません)。
Dim toStrDes As String Ptr
.....
? "*toStrDes:";*toStrDes
2) 可変長文字列が変更された場合、そのディスクリプタのアドレスは同じままですが、文字列の文字データアドレス (演算子 'Strptr' によって返される)は変更される可能性があります (再割り当てが必要な割り当て済みメモリと同様)。
したがって、'myStr' の長さを変更するたびに、使用する前に 'toStr' ポインタ値を更新する必要があります:
toStr=StrPtr(myStr)
Print "*toStr:";*toStr
方言差:
-
別名 __Cptr と共に参照をつけない場合、-lang qb 方言で利用できません。
QBからの違い:
参照:
ページ歴史:2019-07-04 00:13:13
日本語翻訳:WATANABE Makoto、原文著作者:AntoniGual