打印

求c语言高手指教,一段小程序!!!!!!!

[复制链接]
1832|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
枫恋00|  楼主 | 2012-3-21 19:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<stdio.h>
#define ICMPBUF ((uip_icmpip_hdr *)&uip_buf[14])
typedef unsigned char uint8;
typedef unsigned short uint16;
typedef struct
{
  /* IP header. */
  uint8 vhl,
      tos,         
     len[2],      
     ipid[2],        
     ipoffset[2],  
     ttl,         
     proto;     
  uint16 ipchksum;
  uint16 srcipaddr[2],
       destipaddr[2];
  /* ICMP (echo) header. */
  uint8 type,
    icode;
  uint16 icmpchksum;
  uint16 id,
     seqno;  
} uip_icmpip_hdr;
uint8 uip_buf[222];

void main(void)
{
ICMPBUF->vhl = 0x01;
printf("%d",&(ICMPBUF->vhl));
}

((uip_icmpip_hdr *)&uip_buf[14])这段代码是什么意思。

相关帖子

沙发
csq463276932| | 2012-3-22 11:28 | 只看该作者
把uip_buf[14]的地址转成(uip_icmpip_hdr *)形式.
个人见解。

使用特权

评论回复
板凳
suse-lj| | 2012-3-22 12:46 | 只看该作者
&  跟[] 那个的优先级高??

使用特权

评论回复
地板
abcsmile| | 2012-3-22 12:48 | 只看该作者
学习路过

使用特权

评论回复
5
mohanwei| | 2012-3-22 15:31 | 只看该作者
C标准就是这样定义优先级的,如果不想去记,可以像我那样多加对括号:
#define ICMPBUF ((uip_icmpip_hdr *)&(uip_buf[14]))

但是像ch=*pBuff++;这种用得太频繁的就不用加括号了

使用特权

评论回复
6
tcc8073| | 2012-3-22 19:09 | 只看该作者
独立的东西就加个括号,不用花你多少时间,有时候**的东西不一定可靠

使用特权

评论回复
7
枫恋00|  楼主 | 2012-3-22 19:41 | 只看该作者
5# mohanwei 是不是强制类型转换

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

60

帖子

0

粉丝