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

结构体套结构体再套结构体如何引用呢

2012-10-05 
结构体套结构体再套结构体怎么引用呢?请问大家一个问题,第一次发帖,希望不要见笑才好一个结构体里面引用的

结构体套结构体再套结构体怎么引用呢?
请问大家一个问题,第一次发帖,希望不要见笑才好 

一个结构体里面引用的结构体里面还是结构体,如下例:
struct Node
{
Phydata **phydata;
}

struct Phydata
{
Address *address; 
}

struct Address
{
unsigned ipv4;
int id;
}


现在我想引用最里面的ipv4的地址
这样引用
Node *node;
node->phydata->address.ipv4 会报以下错误
无法从Phydata**转换为Phydata*
如果我加上强制转换
((Phydata *)(node->phydata))->address.ipv4 
那node->phydata里面的信息就会丢掉

想请问我应该怎么写才能正确的引用到最里面的信息呢?
非常感谢!!

因为刚刚申请账号,分数不多,请见谅!

[解决办法]
Phydata **phydata是二重指针,*(node->phydata)才是Phydata的地址。
[解决办法]
node->phydata
表示的还是地址,所以必须用(*(node->phydata))->address.ipv4才能正确的引用ipv4
由于->的运算符优先级大于*,所以必须加括号(*(node->phydata))。
*表示地址
**表示地址的地址
[解决办法]
多加括号总是好的, 为了避免被编译器扯到蛋.
((*(node->phydata))->address)->ipv4

热点排行