2013-04-21 73 views
1

我有这样的代码任何人都可以在C中解释这个结构吗?

#define MAX_DIM 3 
struct kd_node_t 
{ 
    double x[MAX_DIM]; 
    struct kd_node_t *left, *right; 
}; 

struct kd_node_t wp[] = { 
    {{2, 3}}, {{5, 4}}, {{9, 6}}, {{4, 7}}, {{8, 1}}, {{7, 2}} 
}; 

我不明白在这个case.Please结构声明

+0

一个大小为MAX_DIM的双数组(2)和两个自引用指针(可能是kd-tree实现)?假设这是一个树实现,最有可能的是一个指向左右节点的指针(由于它们都是节点,它应该和这个结构体具有相同的类型)。 – RageD 2013-04-21 16:42:10

+0

是的,我看到一个KD树代码,但它很难理解它 – 2013-04-21 16:47:33

+0

我不明白为什么你有一个数组x [3]。我以为kd-tree是'struct kd_node_t {int axis;双重价值; struct kd_node_t * left,* right};' – 2013-04-21 16:58:47

回答

1

这是使用大括号initialiation帮助我。

该数组给出了一个逗号分隔的列表,初始化数组中的每个结构体(如果给出了显式大小,其余结构体将初始化为零,我相信)。

因为它们都是相似的,只要拿第一个,{{2,3}}

这有一个单一的元素,{2,3}告诉你如何初始化x成员。由于只指定了两个值,所以余数将初始化为零,给出[2,3,0]。同样,leftright被初始化为空指针。

数组中其余的结构被初始化类似。

+0

谢谢,我明白这一点。 – 2013-04-21 16:46:29

相关问题