-2
我有此代碼的問題:)傳遞陣列用於存儲器分配函數
主要(:
...
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]' – BLUEPIXY