指针使用错误
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
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
相关文章推荐
- NSDirectoryEnumerator
- AlphaGo>李世石?1:0
- VMmare12.0.0安装RedHat6.5使用net模式上网
- 二进制中1的个数
- 排序算法后记
- 蓝桥杯 未名湖边的烦恼
- IOS中根视图控制器的剖析
- Gulp实现服务器
- c语言学习中的杂记
- 解决 eclipse 启动报 ”failed to load the jni shared library“ 问题
- shell订时检测sshd的端口
- iOS开发--UIPickerView(选择器控件) 省份和城市的做法
- UINavigationController导航控制器
- 斐波那契数列
- [matlab]在cvx中使用Mosek
- 线性表之静态链表
- TCP/IP有限状态机
- 走近腾讯 走进腾讯(一个关于面试准备的记录)
- jenkins配置
- c#GDI绘制数字问题