我发现自己在排除故障方面花了相当长的时间,试图找出我的函数有什么问题,我必须说,我不是100%确定这是否是正确的语法来做我想要的东西,我已经得到了这个函数,假设初始化一个1D的结构数组与列表数据,之前的一切函数工作和测试。
Three* createThreeArr(Three** arr, ListThree** head, int counter)
{
int i = 0;
ListThree* pIndex = *head;
*arr = (Three*) calloc(counter,sizeof(Three));
for (i = 0; i < counter ; i++)
{
(arr[i])->col = pIndex->data.col;
(arr[i])->row = pIndex->data.row;
(arr[i])->value = pIndex->data.value;
pIndex = pIndex->next;
}
return *arr;
}
我可以在第一次迭代时插入,但在VS19中却出现了一个异常。 我是这样传递参数的。
*arr = createThreeArr(arr,head,counter);
这些是结构。
typedef struct Three
{
int value;
int row;
int col;
}Three;
typedef struct ListThree
{
struct Three data;
struct List* next;
}ListThree;
这是我的 "主
void Ex3()
{
Three* arr = NULL;
ListThree* head = NULL;
createArrayAndList(matrix,rows,cols,&head,&arr);
}
这个函数createArrayAndList。
int createArrayAndList(int** matrix,int rows, int cols, ListThree** head, Three** arr)
{
int i, j, counter = 0;
Three three;
for (i = 0; i < rows; i++)
{
for (j = 0; j < cols; j++)
{
if (matrix[i][j] == i + j)
{
counter++;
three = createThree(matrix[i][j],i,j);
*head = createThreeList(head,three);
}
}
}
*arr = createThreeArr(arr,head,counter);
return counter;
}
谢谢你们,如果你们想让我提供更多的信息,请告诉我。 我希望这不是一个愚蠢的问题。 :(
有
typedef struct ListThree { struct Three data; struct List* next; }ListThree;
和
Three* createThreeArr(Three** arr, ListThree** head, int counter) { int i = 0; ListThree* pIndex = *head;
在 创建三个Arrr 转让
pIndex = pIndex->next;
是无效的,因为 pIndex->next
价值a struct List*
而非 ListThree*