我想表明前两位公民在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];
答案 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];