在函数内部使用realloc扩展数组 - 指针?

时间:2014-10-14 18:42:19

标签: c arrays pointers struct realloc

我确信这个问题的答案是我不能正确理解指针和参考文献!

因此,在我的C文件开头,我为

定义了一个结构
typedef struct {
    char id[4];
    int age;
    char name[128];
} people;

然后在main()内部创建一个包含10个结构的数组,名为记录

people* record = (people*)malloc(sizeof(people)* 10);

在main()中我们开始,然后潜入一个带

的函数
MyFunction(record);

(此函数在带有

的main()之前的C文件开头原型化
int MyFunction(people *record);

在MyFunction()内部,我们做了各种各样的事情,包括想要增加记录数组大小,以便它可以容纳更多结构。 我正在尝试使用

增加记录数组大小
struct people *tmp = realloc(record, 20 * sizeof (people));
if (tmp)
{
    record = tmp;
}

但这不起作用,如果我尝试在数组中使用新添加的结构,则会导致内存损坏。

正如我所说,我确信这是因为我没有正确地低估指针和参考。 请注意,我不能让MyFunction()将扩展的记录数组作为其返回类型,因为我已经将其返回int用于其他内容(而且我不确定我是否会得到它正常工作!) - 我需要它使用主记录数组。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

int MyFunction(people **record);// MyFunction(&record);//call at main
...

struct people *tmp = realloc(*record, 20 * sizeof (people));
if (tmp)
{
    *record = tmp;
}