考虑以下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个元素腾出了空间?
发布于 2012-02-12 12:09:24
这很可能是ELEment,它是集合中的一个元素。
需要考虑的其他几点:
long整数是32位。tree_ptr类型表明它可能是一个二叉树,但你所能确定的是它是一个包含<long>D10的结构,并且两个指针指向与该结构相同的类型。它很可能是一个双向链表,如果把它放在一起的编码器是乱七八糟的或者足够残暴的:-)发布于 2012-02-12 12:14:52
ELE是结构的所谓标签。标签驻留在与C中其他名称不同的名称空间中(其他名称空间是用于各个结构和联合的成员、标签和其他名称(如变量名、函数名等)的名称空间)
因此,ELE (很可能是"Element")在结构/联合/枚举的名称空间中引用此结构。
https://stackoverflow.com/questions/9246357
复制相似问题