>>310
enum person_index_t
{
 PERSON_NAME, PERSON_ADDRESS, PERSON_AGE
};

char* person_entry(struct person* p, enum person_index_t i)
{
 switch(i)
 {
 case PERSON_NAME: return p->name;
 case PERSON_ADDRESS: return p->address;
 case PERSON_AGE: return p->age;
 default: assert(0);
 }
}

生の値で指定するのは超絶危険行為。
列挙子を使う事。