C: Как вы считаете элементы в структуре? - PullRequest
2 голосов
/ 20 февраля 2011

Итак, у меня есть структура неизвестного размера:

typedef struct a{
int id;
char *name;
enum job {builder=0, banker, baker};
} person;

person p;

и я хочу посчитать, сколько записей в структуре через какой-то цикл. Я уверен, что это очень просто, и я просто не думаю об этом правильно, но я не могу понять, как бы я это сделал, не зная его размера.

Итак, предположительно, я не могу использовать:

for(i=0; i<x; i++) //where x is the size of the struct
{
   if(p.id!=0)
      count++;
}

что мне здесь не хватает?

Ответы [ 3 ]

3 голосов
/ 20 февраля 2011

Структура - это шаблон для размещения памяти.

Переменная - это имя, которое имеет значение, иногда это значение представляет собой набор памяти, распределяемый в соответствии со структурой.

Иногда эта переменная является указателем (возможно, указывающим на группу структур, выложенных в памяти). Иногда эта переменная является массивом (возможно, структур).

Поскольку вы не указали более одной "структуры человека" при определении переменной p, у вас есть только одна структура для подсчета в "p"

1 голос
/ 20 февраля 2011

Предполагая, что у вас есть массив этих структур, вы можете использовать указатель:

person people[100];

person *p = people;
for(i=0; i<100; i++) 
{
    if (p->id != 0)
    {
      count++;
    }

    p++;
}
1 голос
/ 20 февраля 2011

Вы не можете сделать это через цикл.Вы должны будете сделать это, проверив каждый член explicilty.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...