这段代码实际上是如何工作的?

How does this code actually work?

我无法理解用于实现静态链表的这3行代码。这其实就是这个.

的答案

我又把代码贴在这里-(主要动作基本就是第2行)

struct node {int x; struct node *next;};
#define cons(x,next) (struct node[]){{x,next}}
struct node *head = cons(1, cons(2, cons(3, cons(4, NULL))));

我的问题是 - 此语句的功能是什么? (struct node[]){{x,next}}。这是一个初始化语句吗?它返回什么可以分配给 struct node*?

(struct node[]){{x,next}} 是一个复合文字,它将初始化一个 struct *node 指针。

+------+------+     +------+------+     +------+------+     +------+------+
|      |      |     |      |      |     |      |      |     |      |      |
|  1   | next +---->|  2   | next +---->|  3   | next +---->|  4   | NULL |
|      |      |     |      |      |     |      |      |     |      |      |
+------+------+     +------+------+     +------+------+     +------+------+
   ^
   |
  head