我确信这个问题的答案是我不能正确理解指针和参考文献!
因此,在我的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用于其他内容(而且我不确定我是否会得到它正常工作!) - 我需要它使用主记录数组。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
int MyFunction(people **record);// MyFunction(&record);//call at main
...
struct people *tmp = realloc(*record, 20 * sizeof (people));
if (tmp)
{
*record = tmp;
}