簡體   English   中英

指向C中的結構的函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM