C如何比较未知类型的2个元素

标签 c equality

vector_dinamic *creeaza_vector()
{
    vector_dinamic *v=malloc(sizeof(vector_dinamic)*capacitate_initiala);
    v->Element=malloc(sizeof(Elements)*capacitate_initiala);
    v->lungimea=0;
    v->capacitatea=capacitate_initiala;
    return v;

}

这是一个动态 vector ,其中 lungimea 是长度,capacitatea 是容量。 capcacitatea_initiala 为 100,这意味着我可以存储 100 个元素。

typedef void* Elements;

typedef struct{
    Elements * Element;
    int lungimea;
    int capacitatea;

} vector_dinamic;

我也有这种没有元素的类型,为了能够在我的 vector 中存储不同类型的元素,我已经设法添加了,但我的问题是如何比较两个相同类型的元素,我想实现删除功能,但我正在努力比较两个元素

typedef struct{
    int numar_apartament;
    int suma;
    char * tipul;
} Cheltuieli;

我有这个元素类型,现在有人可以告诉我如何通过“numar_apartament”比较我的通用 vector 中的元素吗?

void modifica(vector_dinamic * vector, int numar_apartament)
{
    int i,a=0;
    for (i=0;i<vector->lungimea;i++)
    {
        if (vector->Element[i]->numar_apartament)==element->numar_apartament)
            a=1;
    }
    return a;

}

这是我尝试过的方法,但我遇到了很多错误并且它不起作用......

谢谢!

最佳答案

void 指针没有任何特定类型,这就是它们可以指向任何东西的原因。您必须将 void 指针转换为它们指向的实际类型,才能取消引用它们:

((Cheltuieli *) vector->Element[i])->numar_apartament

括号也有问题,缺少左括号。

关于C如何比较未知类型的2个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15473684/

相关文章:

c - 如何通过 RAM 上的索引设置变量值?

c - 程序的 strtok 部分存在错误

equality - 为什么 J 公理在给出 x、y 的签名时需要 2 x?

java - 如何在 Java 中比较字符串?

java - 默认 .equals 和 .hashCode 将如何适用于我的类(class)?

c - 线程只会对数组的第一个分区进行排序(冒泡排序,Pthread)

c - 为什么 gcc 和 clang 不警告写入地址 0?

c - "Process terminated with status -1073741510 (0 minute(s), 6 second(s))"

python - 将列表制成散列以比较生成的 pin 码?

php - 在 php 中使用 |=