【发布时间】:2016-06-12 14:26:15
【问题描述】:
我会扩展数组,直到程序接收到“-1”作为输入。每次我将当前数组扩展 1 但在 7 次输入后我有“无效的下一个大小:0x0000000000d47010”
void extend(int *v, int i)
{
int *p;
p= (int *) realloc(v, (i+1)*sizeof(int));
if(p!=NULL)
v=p;
}
int main()
{
int *v;
v= malloc(sizeof(int));
int n=0;
int i=0;
while(n!=-1)
{
scanf("%d", &n);
v[i]=n;
extend(v,i);
i++;
}
return 0;
}
编辑 使这项工作可行的可能解决方案
void extend(int *v, int i)
{
int *p;
p= (int *) realloc(v, (i+1)*sizeof(int));
if(p!=NULL)
v=p;
}
int main()
{
int *v;
v= malloc(sizeof(int));
int n=0;
int i=0;
while(n!=-1)
{
scanf("%d", &n);
if(n!=-1)
{
extend(v,i);
v[i]=n;
i++;
}
}
prodottoScalare(v, i);
return 0;
}
【问题讨论】:
标签: c arrays pointers malloc realloc