嵌套结构体问题
定义了以下嵌套结构体,并对其中一个结构体中的一个变量赋值,然后用指针访问的时候显示为0,怎么回事?
我发现偏移量有问题...应该怎么加?
typedef struct _clnp_head
{
char indenfy;
char len;
char ver;
char TTL;
char flag;
short seglen;
short checksum;
}clnp_head;
typedef struct _clnp_addr
{
char srclen;
char srcaddr[10];
char destlen;
char destaddr[20];
}clnp_addr;
typedef struct _clnp_segment
{
short dataid;
short offset;
short totallen;
}clnp_segment;
typedef struct _clnp_s
{
char indenfy;
char len;
char ver;
char TTL;
char flag;
short seglen;
short checksum;
clnp_addr addr;
clnp_segment segment;
}clnp_s;
void main()
{
clnp_s clnp;
clnp_segment *pstSegment = NULL;
memset(&clnp, 0, sizeof(clnp_s));
clnp.addr.srclen = 10;
clnp.segment.dataid = 1;
pstClnp = &clnp;
pstSegment = (clnp_segment*)(void*)((&clnp) + sizeof(clnp_head) + sizeof(clnp_addr));
cout << pstSegment->dataid << endl;
}