解读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
。