首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

struct结构存储有关问题

2012-04-02 
struct结构存储问题C/C++ codestruct tftf_packet{short opcodeunion{char bytes[512]struct{short code

struct结构存储问题

C/C++ code
struct tftf_packet{    short opcode;    union{        char bytes[512];        struct{            short code;            char message[200];            }error;        struct{            short block;            char bytes[512];            }data;        struct {            short block;            }ack;        }u;};void handle_request(int sock, struct sockaddr_in *from, socklen_t from_len,struct tftp_packet *request){    struct tftp_packet data ,response;    //省略一些sockt定义    if(request->opcode!=1) return ;    char *file_name;    file_name = request->u.bytes;    //……}int mian(int argc, char **argv){    struct tftp_packet packet;    //省略sockt建立等    int bytes;    bytes = recvform(sock_fd,&packet,sizeof(packet),0,(struct sockaddr *)&from,&from_len);    hadnle_request(sock_fd,&from,from_len,&packet);}

recvform(sock_fd,&packet,sizeof(packet)
直接将接收到的数据存入结构体?不是不可以直接对结构体整体赋值么?这个到底是怎么实现的?怎么回事呢?
file_name = request->u.bytes;
怎样确定是用bytes存储的?而不是message[]呢?
等高手解答

[解决办法]
把数据放到那块内存中,管它是结构体还是什么体,正好那块内存保存的是那个结构体
在一个union中,bytes和message重叠了

热点排行