指针使用错误

来源:互联网 发布:阿里云服务器续费优惠 编辑:程序博客网 时间:2024/06/05 04:43

 //    IP数据包
typedef struct {
unsigned char header_len:4; //// 4位首部长度
unsigned char version:4;    //4位版本
unsigned char tos;         // 服务类型
unsigned short total_len;  // 总长度
unsigned short ident;       // 标识
unsigned short flags;     // 分段偏移
unsigned char ttl;          // 存活时间
unsigned char proto;         // 协议
unsigned short checksum;     // 首部校验和  
u_char sourceIP[4];          // 源地址
u_char destIP[4];            // 目的地址
}IPHEADER;


IPHEADER *ip_header;



pTcpHdr = (TcpHeader*)(ip_header +20 );



问题描述:

ip_header 是一个上面结构类型的指针,现在我想把ip_header的地址加20,写成上面的结果ip_header +20,很显然得最后的结果是不对的,调试了很长时间。(指针问题)

正确写法:

pTcpHdr = (TcpHeader*)((BYTE*)ip_header +20 );

解析:ip_header +20得到地址偏移量不是20,而是sizeof(IPHEADER)*20



0 0
原创粉丝点击