vc多线程中下面这段代码该如何理解?

DWORDWINAPIThreadProc(LPVOIDlpParameter){intindex=*(int*)lpParameter;}index得到的内容是什么?... DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
int index = *(int*)lpParameter;
}
index得到的内容是什么?
展开
 我来答
amote258
2011-02-12 · TA获得超过1965个赞
知道小有建树答主
回答量:1101
采纳率:0%
帮助的人:1029万
展开全部
无论是在VC 还是其他语言,执行多线程 最终要调用 API函数 CreateThread
,虽然 MFC不提倡直接使用CreateThread,鼓励大家使用_beginthread,
这里函数都有个参数 可以传递参数给线程函数,例如你的 ThreadProc(LPVOID lpParameter)
lpParameter是LPVOID,LPVOID是一个没有类型的指针,所以任何类型都可以通过强制类型转换传递过来
int index = *(int*)lpParameter;
通过上面的一行,可见 ,CreateThread传递过来了一个 整形指针 即 int *

模拟语句:
int a=5;
int *b=&a;//b指向了a的地址,也就是b数值就是a的内存地址。
//////*b=6;//修改了a的内容
/////b=7//这是错误的行为。
CreateThread(........,(LPVOID)b,....)

但是lpParameter毕竟是LPVOID,所以 (int*)lpParameter 强制转换为 整形指针
如果 要想获取指针指向的内如 就在 指针变量前 加个 星号 *
*(int*)lpParameter 就是 所指向的内存的东西。
所以index 得到了由lpParameter所指向内存的内容。
iindex 的值为5
匿名用户
2011-02-14
展开全部
这个意思是把传入的参数强转为一个int类型的值,并放入index中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lilaosi2001
2011-02-12 · TA获得超过823个赞
知道小有建树答主
回答量:296
采纳率:0%
帮助的人:384万
展开全部
index的内容就是你创建这个线程时传递进来的那个参数。
下面是创建线程的函数:
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
DWORD dwStackSize, // initial stack size
LPTHREAD_START_ROUTINE lpStartAddress, // thread function
LPVOID lpParameter, // thread argument 这个就是传递到线程的参数
DWORD dwCreationFlags, // creation option
LPDWORD lpThreadId // thread identifier
);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
2011-02-12 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:5536万
展开全部
传过来的指针所指单元的内容。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高吸低抛工程师
2011-02-24 · TA获得超过205个赞
知道小有建树答主
回答量:60
采纳率:0%
帮助的人:0
展开全部
lpParameter是传进来的无类型指针
(int*) 就是把这个指针转成整形指针
前面再加个 * ,是取指针的内容,也就得到一个整形,再赋给index
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式