为什么需要输入一个指针?

时间:2010-10-23 05:32:51

标签: c sockets

嗨,来自C编程专家

我不是C的专家。我想找到php passing c struct data throught socket programming

的答案

因此我开始一个新的主题,专门询问C语言

以下是数据:

typedef struct
{
  UI2             todo;   
  char            rz[LNG_RZ + 1]; 
  char            saId[LNG_SAT_ID + 1]; 
  char            user[LNG_USER + 1]; 
  char            lang[LANGLEN + 1]; 
  SI4             result;       
  UI4             socket;  
  char            text[LNG_ALLG + 1]; 
  char            filename[MAX_PATHLEN];
}  dmsAuf_Head; 

此数据需要通过套接字发送:

rval = send(dms_aufHead->socket, (char *) dms_aufHead, sizeof(dmsAuf_Head), 0);

为什么需要通过

输入数据
  

(char *)dms_aufHead

通过套接字发送之前?

你能猜出来吗?你介意在abit外行术语解释。谢谢。

3 个答案:

答案 0 :(得分:3)

我不知道这是否是拼写错误,但您不需要转换为char*,但您忘记使用&运算符获取变量的地址。然后send为缓冲区取一个void const*指针,所以一切都应该没问题。这应该这样做:

rval = send(dms_aufHead->socket, &dms_aufHead, sizeof(dmsAuf_Head), 0);

答案 1 :(得分:0)

send函数需要char *参数。这是唯一的原因。传递给函数的类型必须正确。

答案 2 :(得分:0)

您不必投射指针。 send采用const void *参数,只需获取结构地址即可自动转换为void *