アドレスについての質問です。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
abc

アドレスについての質問です。

#1

投稿記事 by abc » 16年前

windowsで6.0Cコンパイラーを使っています.
HANDLE hComm=::CreateFile(.....)でハンドルを取得し、
if((m_pThread = AfxBeginThread(Recv, &hComm, 0,0,0,NULL)) == NULL)でスレッド生成する.

Recv関数は UINT Recv(LPVOID hComm)で宣言されていています。
AfxBeginThread(Recv, &hComm, 0,0,0,NULL))をAfxBeginThread(Recv, (HANDLE*)hComm, 0,0,0,NULL))に
するとうまくいくのですが、&と(HANDLE*)でやった時の違いを教えてもらいたいです。

ちなみに(HANDLE*)でやるとうまくいきます。

自分の考えでは両方アドレスなので問題ないように思ったのですが&だとうまくいきませんでした。
文章がわかりずらいかもしれませんがよろしくお願いします。

YuO

Re:アドレスについての質問です。

#2

投稿記事 by YuO » 16年前

・&hCommを渡す
 →ローカルのオブジェクトへのポインタを渡しているので,hCommが定義された関数から抜け出した場合,Recv関数からは利用できなくなる
 →Recv関数中でのhCommの実際の型はHANDLE *型
・(HANDLE *)hCommを渡す
 →値を渡しているので,hCommが定義された関数から抜け出しても,Recv関数からは利用できる
 →Recv関数中でのhCommの実際の型はHANDLE

abc

Re:アドレスについての質問です。

#3

投稿記事 by abc » 16年前

すいません解決しました。
結論から言うと、ハンドル=アドレスだったんですね><
実態と勘違いしていました。
YuOさんありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る