在函数内部使用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用于其他内容(我不确定我是否也能正常工作!) -我需要它使用主记录数组。

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

 int MyFunction(people **record);// MyFunction(&record);//call at main ... struct people *tmp = realloc(*record, 20 * sizeof (people)); if (tmp) { *record = tmp; }