如何获取结构中的指针,以指向另一个结构中相同类型的数据?
链接列表:
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/