|
![]() | 作者: lxlmf [boadi]
![]() |
登录 |
我实在搞不懂这是不是定义一个ListenThread结构的data,那为什么data还要定义个void 还有 void *CComm::ListenThread( void *data ) { char buf[4096]; CComm *Comm = (CComm *)data; int len = sizeof(Comm->client); while(1) // 一直循环 { //接收数据 int result = recvfrom( Comm->ListenSocket, buf, sizeof(buf)-1, 0, (sockaddr *)&Comm->client, (socklen_t *)&len); if ( result > 0 ) { buf[result] = 0; printf("Message received from host %s port %i\n", inet_ntoa(Comm->client.sin_addr), ntohs(Comm->client.sin_port)); printf(">> %s", buf); fflush(0); } } } CComm *Comm = (CComm *)data;这到底是什么意思 是不是定义个ccomm类的comm指针,然后赋个初始值什么等号后面什么强制转型的 这到底是什么冬冬啊 如果类也是个结构 这到底定义了什么或赋了 什么 谁能帮我解开这个迷啊 |
地主 发表时间: 05-08-30 11:56 |
![]() | 回复: 286 [unique] ![]() |
登录 |
void *CComm::ListenThread( void *data ) { CComm *Comm = (CComm *)data; data是作为参数传进来的,之所以是void *型的,是事先他不知道是什么类型,当然也可以定义成char *类型。 CComm是个类,*Comm是指向这样类的指针,注意这个类没有实体,当用(CComm *)data强制转换以后,这个类的指针就可以把data缓冲区里的数据,当成实体了,从而可以直接通过访问CComm成员变量的方式,访问data中的数据。 |
B1层 发表时间: 05-08-30 12:40 |
![]() | 回复: 286 [unique] ![]() |
登录 |
class IP { unsigned char ip1; unsigned char ip2; unsigned char ip3; unsigned char ip4; }; main() { int ip=1233545,*pip=&ip;//这是4个字节组成的IP地址。 IP *ClassIp=(IP *)pip;//本来pip指向int型的ip,此时那个类的指针就指向了ip这个int值处。 if (ClassIp.ip1==255) //下面就可以以类成员变量的形式访问其中的值了。 } } |
B2层 发表时间: 05-08-30 12:46 |
![]() | 回复: lxlmf [boadi] ![]() |
登录 |
请问这是关于C++中哪个知识点 |
B3层 发表时间: 05-08-30 16:54 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号