C中的结构(指针使用和显示关系)

时间:2010-11-25 17:04:57

标签: c data-structures

我想表明前两位公民在2009年使用指针一起结婚(让我们说公主是安东尼霍普金斯和朱迪福斯特)

struct citizen
{
char sSSC[12];
char sFamilyName[16];
char sNames[24];
char cGender; //men ='m', women='w'
citizen*pSpouse; //Null if not married
int iYearOfMarriage;

}
citizen People[100000];

3 个答案:

答案 0 :(得分:1)

你的意思是,只是:

People[ANTHONY_HOPKINS].pSpouse = &People[JODIE_FOSTER];
People[JODIE_FOSTER].pSpouse = &People[ANTHONY_HOPKINS];
People[ANTHONY_HOPKINS].iYearOfMarriage = 
People[JODIE_FOSTER].iYearOfMarriage = 2009;

或者我误解了这个问题? ''用于引用结构中的成员(或者 - >如果你有指向结构的指针),'&'是指向该符号的指针。

您可能还想将其声明为:

struct citizen *pSpouse;

在C ++中支持将'struct'保留为隐式,但在C中不支持(尽管如果你有一个纯C ++编译器,那么你可以将它主要用于C代码,奇怪之处就是没有报告为错误时应该是)。

增加:

测试记录0和1是否结婚:

if(People[0].pSpouse == &People[1])
{
    printf("They're married!\n");
}

比较指针的值始终是检查它们是否指向同一事物的有效方法。

答案 1 :(得分:1)

People[0].pSpouse = &People[1];
People[0].iYearOfMarriage = 2009; 

People[1].pSpouse = &People[0];
People[1].iYearOfMarriage = 2009; 

答案 2 :(得分:1)

如前所述: 1 GT;如果使用c编译器使用 typedef struct citizen { ... 公民;

和 allPeople [0] .spouse =& allPeople [1];

allPeople [1] .spouse =& allPeople [0];