- 690 名前:デフォルトの名無しさん mailto:sage [2016/09/17(土) 10:14:15.70 ID:ejX8tU80.net]
- >>654
sub Test(byval st as string ptr) print *st end sub dim as string*10 a = "abcd" print @a Test(@a) 問題部分を抜き出してみた まず言えることは、上記の例であれば、Test()関数のstring ptr型と変数aのポインタの型が違う string型は内部にポインタ(記述子)を持つ構造体のようなもので 動的にメモリを確保して代入された文字列を格納する だから@により得られるアドレスはその構造体のアドレス strptr()関数で得られるアドレスは指し示す文字列のアドレスと2種類ある string*N型のように固定長文字列にした場合、その両者のアドレスが同じになるけれど その型のポインタは、その文字列のポインタとなる 関数の引数は、あくまでstring型のポインタだから 「passing different pointer types, as parameter 1(st) of TEST()」って警告が出る 結論としては、string型は可変長文字列として使うために用意された型なので 可変長文字列として扱うか、zstring型のポインタを代わりに使うかすれば良い
|

|