C:你如何计算结构中的项目?

时间:2011-02-20 03:07:47

标签: c structure

所以我有一个未知大小的结构如下:

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 个答案:

答案 0 :(得分:3)

struct是用于布局内存的模板。

变量是一个具有值的名称,有时该值是根据结构布局的一堆内存。

有时候该变量是一个指针(可能指向内存中的一堆结构)。有时该变量是一个数组(可能是结构)。

由于在定义变量p时没有指出多个“person struct”,因此只有一个结构可以计入“p”

答案 1 :(得分:1)

你不能通过循环来做到这一点。你必须通过检查每个成员的明确性来做到这一点。

答案 2 :(得分:1)

假设您实际拥有这些结构的数组,那么您可以使用指针:

person people[100];

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

    p++;
}