c-带有列表数据的结构初始化数组的问题



我发现自己进行了很长时间的故障排除,并试图找出我的函数出了什么问题。我必须说,我不能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;

createThreeArr中的分配

pIndex = pIndex->next;

无效,因为pIndex->next值为struct List*而不是ListThree*

相关内容

  • 没有找到相关文章

最新更新