【问题标题】:Can anyone explain this structure in C?谁能用C解释这个结构?
【发布时间】:2013-04-21 16:40:20
【问题描述】:

我有这个代码

#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}}
};

我不明白这种情况下的结构声明。请帮帮我

【问题讨论】:

  • 一个double 大小为MAX_DIM (3) 的数组和两个自引用指针(可能是kd-tree 实现)?假设这是一个树实现,很可能是一个指向左右节点的指针(它们应该与这个结构具有相同的类型,因为它们都是节点)。
  • 是的,我看到了一个 kd 树代码,但很难理解它
  • 我不明白为什么你有一个数组 x[3]。我以为 kd-tree 是 struct kd_node_t{ int axis; double value; struct kd_node_t *left, *right};
  • 我看到来自rosettacode.org/wiki/K-d_tree 的代码。

标签: c pointers structure


【解决方案1】:

这是使用大括号初始化。

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

因为它们都很相似,所以只取第一个,{{2,3}}。

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

数组中的其余结构体都以类似方式初始化。

【讨论】:

    猜你喜欢
    • 2021-01-08
    • 2012-02-12
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2016-04-10
    • 2010-10-19
    • 2013-04-24
    • 1970-01-01
    相关资源
    最近更新 更多