C 指针结构,不兼容的类型

标签 c debugging

如何获取结构中的指针,以指向另一个结构中相同类型的数据?

链接列表:

typedef struct Item {
    struct Item *ptr; //point to next one
} MyItem;

    typedef struct Collection {
     int x;        
     MyItem coll_ptr; //structure, not a pointer
    } MyCollection

在我有的函数中:

functionX(MyCollection* collection)
{
    MyItem *var= malloc(sizeof(MyItem));
    var->ptr = collection->coll_ptr;   //ERROR: incompatible types
}

假设 coll_ptr 指向有效的 MyItem结构,如何让 new->ptr 指向相同的结构?

但是,如果我这样做var->ptr = &collection->coll_ptr;我没有收到错误消息,

但是这是整个结构的地址吗?

或者集合结构中的特定项目? (假设集合还有其他项目,而不仅仅是指针)?

问题澄清

var->prt 需要指向 coll_ptr 结构,即集合内部。

这是正确的方法吗:var->ptr = collection->coll_ptr;

或者是这样的:var->ptr = &(collection->coll_ptr);

下面的帮助回答
collection->coll_ptr;不是指针,因此需要在语句前面使用 & 来引用该元素的地址。

最佳答案

编译 .c 文件时,单词 new 没有问题。当我使用 Code::Blocks 默认 C/C++ 编译器编译代码时,您的代码没有任何问题,如下所述:

This plugin is an interface to various compilers:

GNU GCC compiler

Microsoft Visual C++ Free Toolkit 2003

Borland C++ Compiler 5.5

您的代码有 0 个错误,请检查您的编译器。

    #include <stdlib.h>

    typedef struct Item {
        struct Item *ptr;
    } MyItem;

    typedef struct Collection {
        MyItem *coll_ptr;
    } MyCollection;

    void functionX(MyCollection* collection)
    {
        MyItem *new = malloc(sizeof(MyItem));
        new->ptr = collection->coll_ptr;   //ERROR: incompatible types
    }

    int main(){
            MyCollection Ha ;
            functionX(&Ha);
            return 0;
    }

编译器:

Process terminated with status 0 (0 minutes, 0 seconds)

0 errors, 0 warnings (0 minutes, 0 seconds)

关于C 指针结构,不兼容的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23860928/

相关文章:

c - x86 实模式的 C 编译器中的 __loadds 关键字是什么意思?

c - 提取 HTTP post 数据

R:如何在不同的文件中设置断点?

c# - 如何在 C#/Visual Studio 中调试谓词?

c - 如何在 C 中使用 stdio 正确移动文件中的查找指针

c - 是否可以在 C 中打印预处理器变量?

c - c中的openssl aes_128_ctr

java - -Xdebug 标志开销有多大?

c++ - gdb pretty-print 不起作用

android - 先进的Android崩溃分析?