C结构内存分配

C结构内存分配,c,C,这里是树数据结构的相关头: #include <stdlib.h> #ifndef KDTREE_H #define KDTREE_H #define DEFAULT_NUMBER_OF_DIMENSIONS 1 #define KD_TREE_HEAP_SIZE 100 #define MAX_DIMENSIONS 32 //References: https://www.geeksforgeeks.org/k-dimensional-tree/ //References: ht

这里是树数据结构的相关头:

#include <stdlib.h>
#ifndef KDTREE_H
#define KDTREE_H
#define DEFAULT_NUMBER_OF_DIMENSIONS 1
#define KD_TREE_HEAP_SIZE 100
#define MAX_DIMENSIONS 32
//References: https://www.geeksforgeeks.org/k-dimensional-tree/
//References:  https://www.cs.cmu.edu/~ckingsf/bioinfo-lectures/kdtrees.pdf
//References:https://iq.opengenus.org/k-dimensional-tree/

  /*
     * Representation of a kd tree
     */
    typedef struct tree_
    {
        struct tree *left; 
        struct tree *right; 

        float * info =  (float *) calloc (MAX_DIMENSIONS, sizeof(float));
        float distance_to_neighbor;
    } tree;

我可以在结构外部进行动态分配,但不能在结构内部进行动态分配?如何在结构内部进行预分配

但是,如果没有
calloc()
或其他功能,这可能会起作用:

typedef struct tree_
{
    struct tree *left; 
    struct tree *right; 

    float info[MAX_DIMENSIONS];
    float distance_to_neighbor;
} tree;

但是,如果没有
calloc()
或其他任何功能,这可能会起作用:

typedef struct tree_
{
    struct tree *left; 
    struct tree *right; 

    float info[MAX_DIMENSIONS];
    float distance_to_neighbor;
} tree;

你为什么要这么做?只需在结构外部执行或使用灵活的数组成员即可。此外,在C语言中,不能将代码放入
struct
声明中;不能使用调用
calloc
的初始值设定项。由于
MAX\u DIMENSIONS
是一个常量,因此声明一个数组<代码>结构树{…浮点信息[最大维度];…}。在其他地方,您必须采取措施确保它已初始化为零
struct tree_*p=calloc(sizeof*p)
struct tree_*tree={0}
。为什么需要这样做?只需在结构外部执行或使用灵活的数组成员即可。此外,在C语言中,不能将代码放入
struct
声明中;不能使用调用
calloc
的初始值设定项。由于
MAX\u DIMENSIONS
是一个常量,因此声明一个数组<代码>结构树{…浮点信息[最大维度];…}。在其他地方,您必须采取措施确保它已初始化为零
struct tree_*p=calloc(sizeof*p)
struct tree_*tree={0}