[英]Function pointing to a struct in c
我正在分析一些代码,但似乎不太了解其中的一些工作原理。
struct dplist {
dplist_node_t * head;
};
struct dplist_node {
dplist_node_t * prev, * next;
element_t element;
};
dplist_t * dpl_create ()
{
dplist_t * list;
list = malloc(sizeof(struct dplist));
DPLIST_ERR_HANDLER(list==NULL,DPLIST_MEMORY_ERROR);
list->head = NULL;
return list;
}
从头文件:
typedef int element_t;
typedef struct dplist dplist_t;
typedef struct dplist_node dplist_node_t;
在主要功能中:
dplist_t * list = NULL;
int main(void)
{
list = dpl_create();
return 0;
}
我不确定如何查看dpl_create()函数,该函数被声明为dplist结构的指针(我认为吗?)。 为什么需要将函数声明为指向结构的指针才能正确执行函数中编写的内容?
在C函数声明中,在函数名称之前的第一个元素始终是它将返回的变量的类型。 在您的情况下,该函数未声明为“指向结构的指针”,而只是声明它将返回指向结构的指针(“返回列表”)。 您可以在代码中看到带有main函数的另一个示例,该示例将返回INT(“ return 0”)。
dpl_create()分配一个新的dplist_t并将其返回。 在C语言中,您无法返回动态分配的对象,因此必须返回对其的引用(指针),因此
dplist_t *
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.