【发布时间】:2014-08-30 01:17:20
【问题描述】:
我遇到了以下maze definition 代码:
typedef struct mazeNode {
int hasCheese;
int tag;
struct mazeNode *left;
struct mazeNode *right;
} maze_t;
maze_t maze = {
.tag = 1,
.left = &(maze_t) {
.left = &(maze_t) {
.left = &(maze_t) {},
.right = &(maze_t) {}
},
.right = &(maze_t) {
.right = &(maze_t) {}
}
},
.right = &(maze_t) {
.tag = 8,
.left = &(maze_t) {},
.right = &(maze_t) {
.tag = 10,
.left = &(maze_t) {
.tag = 11,
.left = &(maze_t) {
.hasCheese = 1,
.tag = 12
}
},
.right = &(maze_t) {}
}
}
};
从链接的blog post 我了解到他们正在尝试用图中的奶酪定义二叉树。
但是,我似乎无法完全理解 C 代码应该做什么。如果有人能给我解释一下就好了。
【问题讨论】:
-
提供的代码附有blog post,作者在其中描述了代码。
-
他们正在使用compound literals。
-
.left = &(maze_t){};和.right = &(maze_t){};会更自然地初始化为0或NULL。就目前而言,层次结构中有一个额外的元素,其.tag值为0,.hasCheese值为0(以及空左右指针)。
标签: c struct designated-initializer compound-literals