c语言中结构体的值

unsigned char pktdata[1024];
unsigned int packetlen;
typedef struct attribute_s
{
unsigned char Type;
unsigned char Length;
} attribute_t;

我现在想知道
pattribute = (attribute_t *) (pktdata+42+prclen);之后pattribute->Type和pattribute->length值分别是多少?

```
首先..纠正楼上两位的错误```

attribute_t *p = new attribute_t;
跟
pattribute = (attribute_t *) (pktdata+42+prclen);
是有本质区别的```

第一种分配了一个attribute_t结构体的内存空间```
第二种的话只是简单的指针赋值而已```而且赋给的值还是一块未分配的内存``

如果是第一种的话, 它的值是不确定的, 因为你没有初始化.
如果是第二种的话, 会出现运行时错误, 因为pktdata+42+prclen, 你强制转换
的这个地址可能并没有被分配```除非你有特殊处理, 先在pktdata+42+prclen这块地址分配了一个attribute_t...
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-12
pattribute = (attribute_t *) (pktdata+42+prclen);
这句实现的应该是结构体指针的定义,你并没有初始化它的值。

这样pattribute->Type和pattribute->length的值就得看编译器初始化的值了
第2个回答  2010-04-12
没搞懂,你的这个语句不知道和
attribute_t *p=new attribute_t;
有什么区别
p->Type和p->Length和你举的例子是一样的,没有对attribute_t;中的数据成员进行初始化。你问值是多少,这个怎么会知道啊。
相似回答