【发布时间】:2017-06-27 17:17:13
【问题描述】:
我们得到一个任务和一个链表结构:
typedef struct dlistint_s
{
int n;
struct dlistint_s *prev;
struct dlistint_s *next;
} dlistint_t;
而函数的原型如下:
dlistint_t *add_dnodeint(dlistint_t **head, const int n);
在创建函数时使用双指针指向头部有什么好处?
【问题讨论】:
-
我会反对这种设计。最好有一个带有指向第一个和最后一个“节点”的指针的“列表”结构。这使您可以通过传入列表来修改列表,而不是直接使用节点
-
通常,您可以使用
bool add_dnodeint(dlistint_t **head, int n)与指向指针参数的指针和非指针返回值(或无返回值 —void),或dlistint_t *add_nodeint(dlistint_t *head, int n)与简单指针参数和匹配的指针返回值(用作head = add_nodeint(head, newval);)。您通常不会同时执行这两项操作——使用指向指针参数的指针并返回一个指针值。请注意,const int n几乎毫无意义,因为n不是指针。
标签: c linked-list