C、如何使用这个树结构

标签 c pointers struct

我的作业涉及阅读汇编代码、弄清楚它的作用,然后将其编写为 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/

相关文章:

c - GNU 中 _TRACE 宏在哪里定义?

java - 如何通过 java 和 c 之间的套接字正确发送数据?

c - 无法在 c 中的二维数组中释放二维数组

objective-c - 如何测试一个对象是否是另一个对象

c++ - 字符到整数 - C++

c - 将文件读取到双向链表时泄漏内存

c - 指针数组的长度

c++ - 是否可以重载可以从指针告诉固定数组的函数?

c - 相同的结构不同的文件

go - 当我将外部结构的实例传递给外部结构实现的接口(interface) slice 时,无法访问嵌入式结构