考虑以下c
代码:
typedef struct ELE *tree_ptr
struct ELE {
long val;
tree_ptr left;
tree_ptr right;
};
我相信ELE
封装了二叉树的单个节点。每个节点具有一些32位值(val),一个pointer
到左节点,pointer
到一个右节点。
有人可以确认我的解释是否正确?
此外,ELE
只是一个任意变量名或用于命名struct
的某些惯例吗?
编辑:
如果有一个c程序生成了以下3行汇编代码,该怎么办:
movq %rbx, -24(%rsp)
movq %rbp, -16(%rsp)
movq %r12, -8(%rsp)
这3行是否为堆栈中3个结构元素腾出空间?
答案 0 :(得分:2)
那很可能是ELEment
,这是该集合的一个元素。
要考虑的其他几点:
typedef
最后需要一个分号。long
整数是32位。tree_ptr
表示它可能 是二叉树,但你知道的是它是一个包含long
的结构和两个指向它的指针输入结构。如果将编组在一起的编码器变得疯狂或虐待狂,那么它很可能是一个双重链表: - )答案 1 :(得分:1)
ELE
是结构的所谓标记。标签驻留在与C中其他名称不同的名称空间中。(其他名称空间是各个结构和联合的成员,标签和其他名称空间(如变量名称,函数名称等))
所以ELE
(最有可能是“元素”)引用结构/联合/枚举命名空间内的这个结构。