指向c中结构的函数

时间:2017-04-17 14:38:35

标签: c function pointers struct typedef

我正在分析一些代码,似乎无法掌握它背后的一些工作原理。

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结构(我认为?)。为什么函数需要声明为结构的指针才能正确执行函数内部的内容?

2 个答案:

答案 0 :(得分:2)

C函数声明中的第一个元素,在函数名称之前,始终是它将返回的变量的类型。 在您的情况下,该函数未声明为"指向结构的指针",它只是声明它将返回指向结构的指针("返回列表")。 你可以在你的代码中看到另一个带有main函数的例子,它将返回一个INT("返回0")。

答案 1 :(得分:0)

dpl_create()分配一个新的dplist_t并返回它。 在C中,您无法返回动态分配的对象,您必须返回一个引用(指针),因此

dplist_t *