Long型のポインタ

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
BingoMan
記事: 36
登録日時: 2005年7月17日(日) 09:36
お住まい: 千葉県松戸市

Long型のポインタ

#1 投稿記事 by BingoMan »

コード: 全て選択

Dim APtr As DWordPtr
APtr=calloc(10)
APtr[0]=-10
MessageBox(0,Str$(APtr[0]),"",MB_OK)
free(APtr)
これでは-10が表示されないのは当然(DWordPtrなので)ですが、符号付整数のポインタがないので困っています。なにかよい方法はございませんでしょうか。
NoWest
記事: 264
登録日時: 2005年5月31日(火) 10:52
お住まい: 高知
連絡する:

Re: Long型のポインタ

#2 投稿記事 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)
BingoMan
記事: 36
登録日時: 2005年7月17日(日) 09:36
お住まい: 千葉県松戸市

#3 投稿記事 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)
NoWest
記事: 264
登録日時: 2005年5月31日(火) 10:52
お住まい: 高知
連絡する:

#4 投稿記事 by NoWest »

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