C语言关于结构体指针解引用传参失败的问题

在中午

struct Point
{
    int x;
    int y;
};

Point *p2;//接受notdanger返回值

    for (DIR dir = 上右; dir < 8; dir = (DIR)(dir+1))//不危险,将新点和新棋盘传到下一次递归函数
    {
        if (p2 = notdanger(chess, p, dir))
        {
            printf("正在计算\n");
            Knight(chess2, *p2, num + 1);
        }
    }

将p2指针解引用后传参进Knight函数

void Knight(Chess (*chess)[8], Point p, int num)//递归函数,num记录当前编号

调试发现,当传参进函数后

img


p变成未知结构了

为什么会这样呢

Point p改为Point *p

Knight(chess2, *p2, num + 1);改成Knight(chess2, p2, num + 1);
void Knight(Chess (*chess)[8], Point p, int num)改成void Knight(Chess (chess)[8], Point p, int num)