C 将指针传递给动态数组

C 将指针传递给动态数组,c,C,将指针传递给动态数组是否正确?它会起作用吗?如果没有,解释原因;如果有,也解释原因。多谢各位 struct record { char * community_name; double data[10]; double crimes_per_pop; }; void allocate_struct_array(struct record *** r); int main() { /* allocating pointer to an array of poin

将指针传递给动态数组是否正确?它会起作用吗?如果没有,解释原因;如果有,也解释原因。多谢各位

struct record
{
    char * community_name;
    double data[10];
    double crimes_per_pop;
};

void allocate_struct_array(struct record *** r);

int main()
{
    /* allocating pointer to an array of pointers */
    struct record ** r;

    /* passing its address to a function */
    allocate_struct_array( &(**r) );
}

/* function gets an address */
void allocate_struct_array(struct record *** r)
{
   ...
}

我试图做的是分配一个指针数组,其中每个指针指向结构记录。函数假设只使用指向r的指针分配这个数组,r在main中声明。正在使用此代码,但无法使其正常工作

我不知道您想做什么,但至少您有一个编程错误

allocate_struct_array( &(**r) );
需要-

allocate_struct_array(&r);

在函数界面中,您只需要一个双指针
struct record**r
,而不需要三个指针

数组可以用
结构记录*数组来表示;所以指向它的指针是
struct record**ptr\u to_array

struct record
{
    char * community_name;
    double data[10];
    double crimes_per_pop;
};

void allocate_struct_array(struct record **r);

int main()
{
    struct record *r;
    allocate_struct_array(&r);
}


void allocate_struct_array(struct record **r)
{
    *r = malloc(23 * sizeof(struct record));
    ...
}
使用
&array
调用函数

struct record
{
    char * community_name;
    double data[10];
    double crimes_per_pop;
};

void allocate_struct_array(struct record **r);

int main()
{
    struct record *r;
    allocate_struct_array(&r);
}


void allocate_struct_array(struct record **r)
{
    *r = malloc(23 * sizeof(struct record));
    ...
}

我不知道代码片段与这个问题有什么关系。我也不知道这个问题是什么意思。对@AndrewMarshall:是的,我试过了。对@OliCharlesworth:问题是容易-如何让它工作?如果不将changind struct record**r更改为struct record*r?除非处理二维数组,否则肯定不需要三重指针。@moshbear:您是指三维数组:)