【发布时间】:2016-10-19 02:02:34
【问题描述】:
我对这段代码有疑问:
主要():
...
int main()
{
int i=0, choice=0;
int *array_val=NULL;
while((choice=menu_sort())!=9)
{
switch(choice)
{
case 1:
i=ins_val(&array_val, i);
break;
....
我从另一个来源调用ins_val() 函数:
int ins_val(int **array_val, int i)
{
int j=0, add=0, k=0;
system("cls");
printf("Number to add: ");
scanf("%d", &add);
i++;
reall(array_val, i);
*array_val[i-1]=add;
for (j=(i-1); j>0; j--)
{
if (*array_val[j]<(*array_val[j-1]))
{
k=(*array_val[j-1]);
*array_val[j-1]=(*array_val[j]);
*array_val[j]=k;
}
}
return i;
}
和
void reall(int **array_val, int i)
{
int *arr=NULL;
arr=malloc(sizeof(int)*i);
int j=0;
for (j=0; j<i-1; j++)
{
arr[j]=(*array_val[j]);
}
int size=(sizeof(int)*i);
free(*array_val);
(*array_val)=(int*)malloc(size);
if ((*array_val)!=NULL)
{
for (j=0; j<i-1; j++)
{
(*array_val[j])=arr[j];
}
free(arr);
}
else
{
...
}
return;
}
我想创建一个动态数组,我可以在其中保存值并对其进行排序。
我的问题是内存分配,因为我只能在array_val 数组中保存一个值,即使使用malloc() 我分配sizeof(int)*i,所以当我尝试保存第二个值时,我得到一个错误。
【问题讨论】:
-
*array_val[j]-->(*array_val)[j]