⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_63840.htm

📁 vc
💻 HTM
字号:
<p>
序号:63840 发表者:badboy 发表日期:2003-12-06 16:28:00
<br>主题:关于线程函数的参数类型!
<br>内容:#include &lt;stdio.h&gt;<BR>#include &lt;stdlib.h&gt;<BR>#include &lt;windows.h&gt;<BR>#include &lt;iostream.h&gt;<BR>DWORD WINAPI ThreadFunc(LPVOID);<BR>int main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE hThrd;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD threadId;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int i;<BR> <BR>&nbsp;&nbsp;&nbsp;&nbsp;for (i=0; i&lt;5; i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hThrd = CreateThread(NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ThreadFunc,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(LPVOID)i,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;threadId );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (hThrd)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;Thread launched %d\n&#34;, i);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hThrd);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;Sleep(2000);<BR>&nbsp;&nbsp;&nbsp;&nbsp;return EXIT_SUCCESS;<BR>}<BR>DWORD WINAPI ThreadFunc(LPVOID n)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;int i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for (i=0;i&lt;10;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;%d\n&#34;,n);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//请问,这个线程函数传进来的n类型不是指针吗?怎么,上面打印出来的是数,而不是地址?<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>}<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-12-06 18:23:10
<br>内容:读一下msdn,写的很详细。<BR>你也可以分析你写的程序。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:学vc 回复日期:2003-12-07 21:07:14
<br>内容:LPVOID: Generic pointer type, equivalent to (void *). <BR>而void* 这种类型实质就是指针,只不过所指的类型不确定而已。<BR>而指针 实际上是一个32 位的无符号的数而已。。<BR>(LPVOID)i, 将i强制转换为void*,<BR>printf(&#34;%d\n&#34;,n)。又将void* 转换为int<BR>实际上输出的就是传进来的数。<BR><BR>不过最后不要这样做, 强制类型转换是不安全的!!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:badboy 回复日期:2003-12-10 17:47:05
<br>内容:printf(&#34;%d\n&#34;,n)。又将void* 转换为int<BR>  这个printf()函数的 %d的什么意思?是不是它把void *指针给强制转换成int 了?  以前没有这么用过,感觉真奇怪!<BR>“而指针 实际上是一个32 位的无符号的数而已。“  的确,指针不过是一个最大能表示2的32次幂的数而已。<BR><BR>#include &#34;iostream.h&#34;<BR>int main(int argc, char* argv[])<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;int i=12;<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;(int *)i&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;(int)i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>}<BR>  
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -