number of fields can be obtained using "NumberOfFields()":
const char* fields[] = {"a", "b", "c"};
mwArray a(2, 2, 3, fields);
int n = a.NumberOfFields();
individual field names can then be obtained using "GetFieldName(id)"
const char* fields[] = {"a", "b", "c"};
mwArray a(2, 2, 3, fields);
mwString tempname = a.GetFieldName(1);
const char* name = (const char*)tempname;
So using a loop all names you can get all names. Not aware of a simpler solution...