Вы имеете в виду, просто:
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;
Оставление «struct» как неявного поддерживается в C ++, но не в C (хотя, если у вас есть компилятор pure-C ++, вы можете в основном использовать его для кода C, при этом странные вещи, подобные этому, не сообщаются как ошибка, когда так и должно быть).
Дополнительно:
Чтобы проверить, женаты ли записи 0 и 1:
if(People[0].pSpouse == &People[1])
{
printf("They're married!\n");
}
Сравнение значений указателей всегда является правильным способом проверить, указывают ли они на одно и то же.