我的作业涉及阅读汇编代码、弄清楚它的作用,然后将其编写为 C 代码。我很难理解如何使用给定的 C 代码,它是这样的:
typedef struct ELE *tree_ptr;
struct ELE {
long val;
tree_ptr left;
tree_ptr right;
};
有了这个原型(prototype)(如果重要的话):
long traverse(tree_ptr tp);
有人可以告诉我如何正确创建一个、设置它的 val 字段并打印它吗?这会导致段错误:
int main () {
tree_ptr tp;
tp->val = 5;
//printf("%lu\n", tp->val);
}
最佳答案
tree_ptr
实际上只是一个 ELE *
。重要的部分是 *
。这是一个指针。它需要内存。指针需要与有效的内存地址相关联才能使用它们。一些可能的选择是:
选项 1:
tree_ptr tp;
tp = malloc(sizeof(*tp)); // allocate memory for it, don't forget to free() it!
选项 2:
struct ELE tp; // Don't even use a pointer at all...
关于C、如何使用这个树结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15017970/