解读c结构

解读c结构,c,pointers,struct,C,Pointers,Struct,考虑到以下c代码: typedef struct ELE *tree_ptr struct ELE { long val; tree_ptr left; tree_ptr right; }; 我相信ELE封装了二叉树的单个节点。每个节点都有一些32位值(val),一个指向左节点的指针,一个指向右节点的指针 有人能证实我的解释是正确的吗 另外,ELE是否只是一个任意变量名或用于命名struct的某种约定 编辑: 如果有一个c程序生成以下3行汇编代码,该怎么办 movq

考虑到以下
c
代码:

typedef struct ELE *tree_ptr

struct ELE {
   long val;
   tree_ptr left;
   tree_ptr right;
};
我相信
ELE
封装了二叉树的单个节点。每个节点都有一些32位值(val),一个指向左节点的
指针,一个指向右节点的
指针

有人能证实我的解释是正确的吗

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

编辑:

如果有一个c程序生成以下3行汇编代码,该怎么办

movq     %rbx, -24(%rsp)
movq     %rbp, -16(%rsp)
movq     %r12, -8(%rsp)

这三行是否为堆栈上结构的三个元素腾出空间?

这很可能是集合中的一个元素
元素

需要考虑的其他几点:

  • 您的
    typedef
    结尾需要一个分号
  • C标准不保证
    long
    整数为32位
  • 类型
    tree\u ptr
    表明它可能是一个二叉树,但您可以肯定的是,它是一个包含
    long
    和指向与结构相同类型的两个指针的结构。如果把它放在一起的编码员是精神错乱或虐待狂,那么它很可能是一个双重链接列表:-)

  • 这很可能是
    元素
    ,集合中的一个元素

    需要考虑的其他几点:

  • 您的
    typedef
    结尾需要一个分号
  • C标准不保证
    long
    整数为32位
  • 类型
    tree\u ptr
    表明它可能是一个二叉树,但您可以肯定的是,它是一个包含
    long
    和指向与结构相同类型的两个指针的结构。如果把它放在一起的编码员是精神错乱或虐待狂,那么它很可能是一个双重链接列表:-)

  • ELE
    是结构的所谓标记。标记与C中的其他名称位于一个单独的名称空间中(其他名称空间用于各自的结构和联合、标签以及其他(如变量名、函数名等)的成员)


    因此
    ELE
    (最有可能是“Element”)在结构/联合/枚举的命名空间内引用此结构。

    ELE
    是结构的所谓标记。标记与C中的其他名称位于一个单独的名称空间中(其他名称空间用于各自的结构和联合、标签以及其他(如变量名、函数名等)的成员)


    因此
    ELE
    (最有可能是“Element”)在结构/联合/枚举的名称空间中引用这个结构。

    这是我的直觉告诉我的,我只是想确定一下。感谢我的直觉告诉我的,我只是想确定一下。感谢编辑在我看来是一个完全不同的问题,与原文无关。如果你把它作为一个不同的问题来问,并且有更多的上下文,你会得到更好的回答。汇编代码可以由一百个不同的C代码段(源代码:-)生成,这些指令都不会在堆栈上分配任何空间,因为它们不会更改堆栈指针
    rsp
    。在我看来,编辑是一个完全不同的问题,与原始问题无关。如果你把它作为一个不同的问题来问,并且有更多的上下文,你会得到更好的回答。汇编代码可以由一百个不同的C代码段(源代码:-)生成,这些指令都不会在堆栈上分配任何空间,因为它们不会更改堆栈指针
    rsp