您的位置:首页 > 其它

指针使用错误

2016-03-11 22:44 232 查看
 //    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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: