int i=0;
void push(int *ptr)
{
if(i==0)
{
ptr= (int *)calloc(1,sizeof(int));
}
else
{
ptr=(int *)realloc(ptr,sizeof(int)*(i+1));
}
i++;
}
当我添加两个或更多数字时,realloc发出错误(main.exe)
答案 0 :(得分:3)
我假设你在其他地方有一个指针,你作为参数发送到函数“push”?
您需要发送指向该指针的指针,因此“push”函数可以更改其值。
答案 1 :(得分:0)
您可能需要做的主要事情是将push
参数声明为int **ptr
,分配给*ptr
,然后使用&ptr
进行调用。
你也不需要演员和其他一些东西,我可能会建议:
int i=0;
void push(int **ptr)
{
*ptr = i++ == 0 ? calloc(1,sizeof(int)) : realloc(ptr,sizeof(int)*(i+1));
}