[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/13 05:17 / Filesize : 519 KB / Number-of Response : 1084
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【QBASIC互換!?】FreeBasic【GPL】



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型のポインタを代わりに使うかすれば良い






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´Д`)<519KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef