ページ 11

Long型のポインタ

Posted: 2005年7月18日(月) 22:49
by BingoMan

コード: 全て選択

Dim APtr As DWordPtr
APtr=calloc(10)
APtr[0]=-10
MessageBox(0,Str$(APtr[0]),"",MB_OK)
free(APtr)
これでは-10が表示されないのは当然(DWordPtrなので)ですが、符号付整数のポインタがないので困っています。なにかよい方法はございませんでしょうか。

Re: Long型のポインタ

Posted: 2005年7月19日(火) 00:05
by NoWest
>

コード: 全て選択

Dim APtr As DWordPtr
> APtr=calloc(10)
> APtr[0]=-10
> MessageBox(0,Str$(APtr[0]),"",MB_OK)
> free(APtr)
> これでは-10が表示されないのは当然(DWordPtrなので)ですが、符号付整数のポインタがないので困っています。なにかよい方法はございませんでしょうか。

コード: 全て選択

Dim APtr As DWordPtr
APtr=calloc(4*10)
APtr[0]=-10
Dim B As Long
B=APtr[0]
MessageBox(0,Str$(B),"",MB_OK)
free(APtr)
ではダメですか?


もしかしたら下記でも動くかもしれませんが。。。

コード: 全て選択

Dim APtr As *Long
APtr=calloc(4*10)
APtr[0]=-10
MessageBox(0,Str$(APtr[0]),"",MB_OK)
free(APtr)

Posted: 2005年7月19日(火) 00:20
by BingoMan
NoWest様、早速のご返事ありがとうございます。
Dim APtr As DWordPtr
APtr=calloc(4*10)
APtr[0]=-10
Dim B As Long
B=APtr[0]
MessageBox(0,Str$(B),"",MB_OK)
free(APtr)
でうまく動きました。しかし残念ながら下記のコードではうまく動作しませんでした。これではなぜダメなのでしょうか。
Dim APtr As *Long
APtr=calloc(4*10)
APtr[0]=-10
MessageBox(0,Str$(APtr[0]),"",MB_OK)
free(APtr)

Posted: 2005年7月19日(火) 00:56
by NoWest
しかし残念ながら下記のコードではうまく動作しませんでした。これではなぜダメなのでしょうか。
>
Dim APtr As *Long
> APtr=calloc(4*10)
> APtr[0]=-10
> MessageBox(0,Str$(APtr[0]),"",MB_OK)
> free(APtr)
多分、*Longというポインタを作っても、*Dwordのポインタとして認識されているんだと思います。
目的の変数を噛ませれば問題なく動作しますので特にどうってことはないんですが、、ポインタ操作が多くなってくるとポインタへのアクセス法も各変数に対応したものにしないといけないと思いますね。