读书人

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

发布时间: 2012-02-22 19:36:55 作者: rapoo

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

数据结构如下:
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

读书人网 >C语言

热点推荐