所以我有一个未知大小的结构如下:
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++;
}
我在这里缺少什么?
答案 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++;
}