带列表数据的结构的初始化数组问题。

问题描述 投票:0回答:1

我发现自己在排除故障方面花了相当长的时间,试图找出我的函数有什么问题,我必须说,我不是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;
}

谢谢你们,如果你们想让我提供更多的信息,请告诉我。 我希望这不是一个愚蠢的问题。 :(

c arrays pointers struct linked-list
1个回答
0
投票

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*

© www.soinside.com 2019 - 2024. All rights reserved.