gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:14:49 26 4
gpt4 key购买 nike

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

链接列表:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com