首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解释c结构

解释c结构
EN

Stack Overflow用户
提问于 2012-02-12 12:08:08
回答 2查看 233关注 0票数 0

考虑以下c代码:

代码语言:javascript
复制
typedef struct ELE *tree_ptr

struct ELE {
   long val;
   tree_ptr left;
   tree_ptr right;
};

我相信ELE封装了二叉树的单个节点。每个节点都有一些32位的值(Val),左边节点有一个pointer,右边节点有一个pointer

有人能确认我的解释是正确的吗?

另外,ELE只是一个任意的变量名,还是用于命名struct的某种约定

编辑:

如果有一个c程序生成了以下3行汇编代码:

代码语言:javascript
复制
movq     %rbx, -24(%rsp)
movq     %rbp, -16(%rsp)
movq     %r12, -8(%rsp)

这3行代码是否为堆栈中结构的3个元素腾出了空间?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-12 12:09:24

这很可能是ELEment,它是集合中的一个元素。

需要考虑的其他几点:

  1. 你的代码末尾需要一个分号。
  2. C标准不保证long整数是32位。
  3. tree_ptr类型表明它可能是一个二叉树,但你所能确定的是它是一个包含<long>D10的结构,并且两个指针指向与该结构相同的类型。它很可能是一个双向链表,如果把它放在一起的编码器是乱七八糟的或者足够残暴的:-)
票数 2
EN

Stack Overflow用户

发布于 2012-02-12 12:14:52

ELE是结构的所谓标签。标签驻留在与C中其他名称不同的名称空间中(其他名称空间是用于各个结构和联合的成员、标签和其他名称(如变量名、函数名等)的名称空间)

因此,ELE (很可能是"Element")在结构/联合/枚举的名称空间中引用此结构。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9246357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档