c - 为什么会出现取消引用指针错误?

标签 c pointers byte bit

我目前正在编写一个需要使用指针的 C 程序,而我对此并不擅长。 我目前收到 4 个错误,全部显示“取消引用指向不完整类型的指针”,但我不知道为什么。

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

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);
          }
        }
    }
}

错误出现在行 int maxSize = dest -> size_in_bits;

如有任何帮助,我们将不胜感激,谢谢。

最佳答案

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

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

*dest 和 *src 都应该具有传入其中的地址,因为两者都来自相同的结构位集。

关于c - 为什么会出现取消引用指针错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33529579/

相关文章:

c - Visual Studio 2010 运行时检查失败 #3

c - 寻求开箱即用的基于 Windows 的 C 单元测试系统(最好使用 Netbeans)

c - 在需要之前,必须从模块 'entry' 导入 'Darwin.POSIX.search' 的定义

c++ - 数组和指针有问题

c - 为什么 2[myArray] 是有效的 C 语法?

java - 使用 Java 将十六进制转储的字符串表示形式转换为字节数组?

Python元组到C数组

java - java中字节数组的初始化

c# - 80 字节换行格式文本文件?

c++ - char* argv[] 在 C/C++ 中如何工作?