【发布时间】:2014-11-22 11:47:00
【问题描述】:
我应该做一个程序,从现有的数组中构建一棵树,并带有一些属性。我的问题不在于如何做到这一点(我应该做一些递归函数,这没关系),因为当我尝试启动构建函数时,我遇到了一些分段错误。所以我试图“隔离”这个问题,当我创建树的根节点时我看到了它。我真的不明白为什么会出现这个错误(因为我已经使用列表一段时间了,所以,即使我不是专家,我也不是指针和链接结构的新手)。我尝试编写一个非常简单的主代码来查看发生了什么,但我发现我什至无法初始化单个节点。代码如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct elem {
int info;
struct elem *p;
struct elem *left;
struct elem *right;
} tree;
typedef tree* tree_punt;
void fill(int *array, int size) {
int i;
for(i=0; i<size; i++) {
array[i] = i+1;
}
}
void show(int *array, int size) {
int i;
for(i=0; i<size; i++) {
printf("%d ", array[i]);
}
printf("\n");
}
int main() {
int *array;
int size;
size = 7;
fill(array, size);
show(array, size);
printf("array \"address\": %d\n", array);
tree_punt test;
printf("tree \"address\": %d\n", test);
test = (tree_punt)malloc(sizeof(tree));
test->info = 5;
printf("info: %d\n", test->info);
}
当我使用 malloc 作为测试指针时出现分段错误。奇怪的是,如果我不将值放入数组中,我就没有问题......为什么?为什么数组要打扰我可怜的树?
【问题讨论】:
标签: c arrays pointers linked-list structure