2008-05-31

C中复杂的结构题的访问注意

今天写了一个模块,主要是一个处理成员内容为一个结构体的队列抽象数据类型,主函数的代码如下:
int main(int argc, char** argv)
{
member testone={"sadfsaf","asdfijvasdf","sdfsjdflsdf"};
member testtwo={"2222dsf","222dfsdf","222dsafff"};
member testthree={"3333dsf","333dfsdf","333dsafff"};
queue_node *test;
int i;

creat_queue(3);
insert_member(&testone);
insert_member(&testtwo);
insert_member(&testthree);
for(i=0;i<3;i++)

printf("the first is %s\n%s\n%s\n",test->mvalue.addrs,test->mvalue.subadds,test->mvalue.opts);

delete_member();
}

return (EXIT_SUCCESS);
}

主要看蓝色的部分,其实当我们面对简单的结构体的时候我们能够很明白
假设p为一结构体名,那么访问结构体成员直接用p.addrs。
假设pp为一指向结构体的指针的时候,那么访问结构体成员就用pp->addrs
但是这里我使用的是一个包涵结构体成员的结构体,第一次写的时候就错写成p->mvalue->addrs了。所以在声明了多重的结构题并且使用指针的时候这个问题是很可能迷惑我们的。

没有评论: