gpt4 book ai didi

c - 指向指针的指针数组删除错误

转载 作者:行者123 更新时间:2023-11-30 16:45:04 25 4
gpt4 key购买 nike

好的,我得到了函数 addCar、Copy_Arr 和 free_A。我基本上希望每次新的 int *carNum 指向时都添加到动态数组 int **CarArray ,所以我必须使用临时数组来执行此操作。程序一直卡在 free_A 函数上,我不明白为什么。

 void main()
{
int **CarArray=NULL;
int *carNum = NULL;
int *numOfCars;
numOfCars=(int)malloc(sizeof(int));
*numOfCars = 0;
addCar(CarArray,carNum,numOfCars);
}

int **addCar(int **CarArray, int *carNum, int *numOfCars)
{
int i,size;
int** temp=NULL;
temp=Build_A(temp,*numOfCars + 1);//function for memory allocation
carNum=buildNumber();
temp[*numOfCars] = carNum;
Copy_Arr(CarArray, temp,*numOfCars);
free_A(CarArray, *numOfCars);
*numOfCars = *numOfCars + 1;
CarArray=Build_A(CarArray, *numOfCars);
Copy_Arr(temp, CarArray, *numOfCars);
free_A(temp, *numOfCars);
return CarArray;


}


void Copy_Arr(int **From, int **To, int numOfCars)
{
int i,j,size = 0;
for (j = 0;j < numOfCars;j++)
{
size = From[j][0];
for (i = 0;i <size+1;i++)
{
To[j][i] = From[j][i];
}
}
}


void free_A(int **Arr, int num)
{
int i;
for (i = 0;i < num;i++)
{
free(Arr[i]);
}

free(Arr);
}

int** Build_A(int **Arr, int num)
{
Arr = (int **)malloc((num) * sizeof(int*));
int i = 0;
for (i = 0;i < num;i++)
{
Arr[i] = (int*)malloc(num * sizeof(int));
}
return Arr;
}

int *buildNumber()
{
int i,num;
int size;
int* arr=NULL;
printf("Please Enter Plate Size\n");
scanf("%d", &size);
printf("Please Enter Plate Number\n");
scanf("%d", &num);
arr = (int*)malloc((size+1) * sizeof(int));
for (i = size;i > 0;i--)
{
arr[i] = num % 10;
num = num / 10;
}

arr[0] = size;
printarr(arr);

return arr;


}

最佳答案

问题应该在第 18 行:

Copy_Arr(CarArray, temp,*numOfCars);

因为此时“CarArray”为 NULL。所以在第 35 行:

size = From[j][0];

这应该是一个错误。

关于c - 指向指针的指针数组删除错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44239094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com