将指针传递给动态数组

时间:2011-12-11 02:26:13

标签: 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 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的指针来分配此数组,该指针在main中声明。正在玩这个代码,但无法使其工作。

2 个答案:

答案 0 :(得分:2)

我不知道你要做什么,但至少你有程序错误。

allocate_struct_array( &(**r) );

需要 -

allocate_struct_array(&r);

答案 1 :(得分:1)

在函数接口中,您只需要一个双指针struct record **r而不是三指针。

数组可以用struct record *array表示;所以指向它的指针是struct record **ptr_to_array

您使用&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));
    ...
}