为什么我会解除引用指针错误?

时间:2015-11-04 18:41:25

标签: c pointers byte bits

我目前正在做一个需要使用指针的C程序,我并不擅长。 我目前正在收到4个错误,这些错误都说“解除指向不完整类型的指针”#39;而且我不知道为什么。

以下是我如何设置指针以及我在何处收到错误的示例。

if ( !(inF >> first >> last >> middle) )
{
    // Deal with error.
}

每当我尝试引用指针时都会出错,例如在此函数中。

struct myset
{
    unsigned char *vector;
    int size;
    int size_in_bytes;
    int size_in_bits;
};

struct myset* set_new(int size)
{
    int i;
    struct myset* s;
    s= malloc (sizeof (struct myset));
    s->vector=malloc(sizeof(char)*(size/(sizeof(char)*8))+1);
    for(i=0; i<size; i++)
    {
        s->vector[i]=0;
    }
    s->size_in_bits=size;
    s->size_in_bytes=(size/(sizeof(char)))+1;
    return s;
};

错误在第void bitset_intersect(struct bitset * dest, struct bitset * src1, struct bitset * src2) { int maxSize = dest -> size_in_bits; int i; int j; for(i = 0; i<maxSize; i++) { for(j = 0; j<maxSize; j++) { if(bitset_lookup(src1, i) == bitset_lookup(src2, j)) { bitset_add(dest,i); } } } }

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

如果没有函数调用,则很难判断您是否将正确的值作为参数传递。

如果在尝试引用指针时遇到错误,请检查函数调用以确保正确传递地址。这样做会消除此错误。

* dest和* src都应该具有传递给它的地址,因为它们都来自相同的struct bitset。