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

怎样给二级链表动态分配存储空间?多谢

2012-02-22 
怎样给二级链表动态分配存储空间?谢谢数据结构如下:typedefstructPkt{IPHdr*iphTCPHdr*tcphUDPHdr*udph

怎样给二级链表动态分配存储空间?谢谢

        数据结构如下:
typedef   struct   Pkt      
        {
IPHdr     *iph;
TCPHdr     *tcph;
UDPHdr   *udph;
ICMPHdr     *icmph;

struct   Pkt   *next;
        }   Pkt;
typedef   struct  
        {
unsigned   long   int     th_sport;             //源端口
unsigned   long   int     th_dport;           //目的端口
        }   TCPHdr;
      那怎样给pkt1(它属于Pkt类型)来动态分配空间呢?
    pkt1=(struct   Pkt   *)malloc(sizeof(struct   Pkt))这样就行了吗,还是必须再具体些,加上pkt1-> iph=(IPHdr   *)Pkt呢?

[解决办法]
就pkt1本身而言
pkt1=(struct Pkt *)malloc(sizeof(struct Pkt));
就行了。但实际使用时,显然pkt1中每一项都是指针,那么记得它们指向的该是有效的(已经被动态分配过的,或者静态的,或者栈空间的)地址空间就行了。
[解决办法]
不是已经给你回过了吗?怎么又开了个贴?
你还需要分别定义
IPHdr *iph;
TCPHdr *tcph;
UDPHdr *udph;
ICMPHdr *icmph;
这几个指针分配内存。
pkt1=(struct Pkt *)malloc(sizeof(struct Pkt));这句之后还要依次这样
ptk1-> iph = (IPHdr*)malloc(sizeof(IPHdr));
下同!
http://community.csdn.net/Expert/topic/5380/5380671.xml?temp=.2039759

热点排行