为什么我会将指针增加到未知结构"?

时间:2015-11-18 15:00:13

标签: c pointers

我试图建立一个名为" cache"的结构,它包含一个容器(一个已经实现的List类型的数组)和一个迭代器。 当我试图在容器中的下一个List中创建迭代器点时,我得到了#34;指向未知结构的指针的增量"和"算术指向不完整类型"。我想要解释一下我做错了什么:

列表的类型定义如下:

typedef struct List_t *List;

所以List是一个指向List_t结构的指针。

缓存定义如下:

typedef struct cache_t* Cache;

struct cache_t {
    List* container;
    int cache_size;
    List iterator;
};

所以迭代器是一个List,它是一个指向数组(容器)中List_t的指针。 我想做的是:

cache->iterator ++; //cache is an object of type Cache

据我所知,应该通过sizeof(List)将迭代器移动到数组中的下一个List。那我为什么会收到错误?

谢谢!

1 个答案:

答案 0 :(得分:1)

指针不会增加sizeof(List),而是增加sizeof(struct List_t)struct List_t的定义不在您的来源中,因此是不完整的类型。这就是错误的原因。