0

我有一个大小为 57 字节的结构,但是当我转换为 char * 时,char * 变量的大小仅显示 4 个字节。这有什么问题?

代码:

struct overhead{

    unsigned char flags;
    unsigned short int seqNo, timeDiff, threshold, length;  

};    

struct payload{

    double forceX,forceY,forceZ,positionX,positionY,positionZ;

};


struct packet{

    overhead fields;
    payload data;

};

packet pack;

// Assigning some values to the struct members.

char * message = (char *)pack;

retval = send(conn_socket, message , sizeof(message), 0);

编辑:

在接收方,如果将 char * 类型转换为数据包 *,则 strut 成员不会获得在发送方分配的值。为什么会这样?

4

3 回答 3

3

char* 是一个指针(即内存地址),因此将是 32 位(在 32 位平台上);4字节。

于 2013-05-14T10:05:36.103 回答
1

char*在 32 位机器上 4 字节。所以sizeof(char*)== 4。如果您想要可以使用的长度sizeof(packet),请参见此处

此外,您应该考虑序列化您的数据包。

于 2013-05-14T10:17:51.817 回答
0

pack是指向 a 的指针char。32 位平台上的指针大小为 4 个字节。如果您想要pack指向的数据的长度,请尝试strlen

于 2013-05-14T10:07:20.190 回答