关于realloc问题
这程序的意思是现在一个顺序表内输出内容,然后要在这个顺序表内再插入一个是数字,这是要用realloc来增加一个空间
但是,输出的结果却不正确,除了顺序表的第一个位置,和插入位置的内容是正确的,其余的都是一个负数。这是什么问题造成的?
#include <stdio.h>
#include <malloc.h>
#include "list2.h"
main()
{
struct sqlist p1;
int *newbase,*newbase1 ,*q,*p;
int i;
int e=9;
newbase=(int *)malloc (sizeof (4));
if (!newbase) return 0;
p1.elem=newbase;
printf ("Input the number in the sqlist p1 --");
while (i<4)
{
scanf ("%d ",&p1.elem[i] );
i++;
}
printf ("\n");
for (i=0;i<4;i++)
printf ("p1->%d ",p1.elem[i]);
printf ("\n\n");
//realloc
newbase1=(int *)realloc(p1.elem,(4 +1)*sizeof(int));
if (!newbase1) return 0;
p1.elem=newbase1;
q=&p1.elem[2];
for(p=&p1.elem[4];p>=q;p--)
{
*(p+1)=*p;
}
*q=e;
for (i=0;i<5;i++)
printf ("p1->%d ",p1.elem[i]);
}