我试图创建一个函数,为我的动态分配的struct数组添加一个元素,但我似乎无法使其工作。 这是我的代码的一部分:
void add_vect(complex *vect,int n)
{ int i,pos;
complex *nr;
printf ("Please enter the number you want to add : ");
nr=read_complex(nr);
write_complex(nr);
printf ("Please enter the position of the new number : ");
scanf("%d",&pos);
n++;
vect=realloc(vect,n*sizeof(complex));
write_vect(n);
}
这里我正在阅读新的复数我试图添加到我的数组和它将被添加的位置但是当我重新分配我的数组并且我进行测试以查看我的旧元素是否仍然存在时,显然它改变我的最后一个元素。
所以,如果我读了3个复数
1 +2i , 3+4i, 5+6i
我打印我的矢量一切似乎都没问题,但在我调用此函数并在重新分配后再次打印它显示:
v[1] = 1+2i - this one is good,
v[2] = 3+4i - still good,
v[3] = 121213121 +6i - not good and
v[4] = -12312321 +231312i
我知道v [4]是这样的,因为我没有修改它,但为什么v [3]会受到realloc的影响?