C 预期';字符**';但参数的类型是';字符***';

C 预期';字符**';但参数的类型是';字符***';,c,C,在我的主要函数中,我使用 void printboard (char **board, int n) 在编译时,我得到了错误 printBoard(&board, dim); 你的第一个malloc不好。您想为dim类型为char*的指针分配空间。因此,您需要: note: expected 'char **' but argument is of type 'char***' 然后是编译错误。这是因为&board是board的地址。由于线路板具有类型字符**,因此线路板具有类型字

在我的主要函数中,我使用

void printboard (char **board, int n)
在编译时,我得到了错误

printBoard(&board, dim);

你的第一个malloc不好。您想为
dim
类型为
char*
的指针分配空间。因此,您需要:

note: expected 'char **' but argument is of type 'char***'
然后是编译错误。这是因为
&board
board
的地址。由于
线路板
具有类型
字符**
,因此
线路板
具有类型
字符***
。这就是编译器所说的。您需要通过
线路板
,而不是
线路板

board = malloc(dim*sizeof(char*));

你的第一个malloc不好。您想为
dim
类型为
char*
的指针分配空间。因此,您需要:

note: expected 'char **' but argument is of type 'char***'
然后是编译错误。这是因为
&board
board
的地址。由于
线路板
具有类型
字符**
,因此
线路板
具有类型
字符***
。这就是编译器所说的。您需要通过
线路板
,而不是
线路板

board = malloc(dim*sizeof(char*));

你的第一个malloc不好。您想为
dim
类型为
char*
的指针分配空间。因此,您需要:

note: expected 'char **' but argument is of type 'char***'
然后是编译错误。这是因为
&board
board
的地址。由于
线路板
具有类型
字符**
,因此
线路板
具有类型
字符***
。这就是编译器所说的。您需要通过
线路板
,而不是
线路板

board = malloc(dim*sizeof(char*));

你的第一个malloc不好。您想为
dim
类型为
char*
的指针分配空间。因此,您需要:

note: expected 'char **' but argument is of type 'char***'
然后是编译错误。这是因为
&board
board
的地址。由于
线路板
具有类型
字符**
,因此
线路板
具有类型
字符***
。这就是编译器所说的。您需要通过
线路板
,而不是
线路板

board = malloc(dim*sizeof(char*));

&varname
为您提供指向该变量的指针<代码>&board,其中board是
int**
,为您提供指向
int**
的指针;换句话说,and
int***
为您提供指向该变量的指针<代码>&board,其中board是
int**
,为您提供指向
int**
的指针;换句话说,and
int***
为您提供指向该变量的指针<代码>&board,其中board是
int**
,为您提供指向
int**
的指针;换句话说,and
int***
为您提供指向该变量的指针<代码>&board,其中board是
int**
,为您提供指向
int**
的指针;换句话说,
int***

您已经将电路板空间定义为char类型,但是当您的需求发生变化时会发生什么?您可能应该提供一个struct或typedef,如果您的需求/需求发生变化,那么进行更改就更容易了

printBoard(board, dim);
您可以只分配一个数组,其尺寸为rowsize x columsize,然后使用forumla通过计算position=row*columsize+column来查找线路板的位置

typedef char boardspace;
或者,您可以分配一个行数组,每个行包含指向列数组的指针。但这意味着您需要检查多个malloc的结果,错误处理变得更加困难

int boardposition(int dim, int row, int col)
{
    return row*dim + col;
}
使用上述板位置公式,在一维中分配板

typedef struct space_s
{
    char space;
} SpaceObj;
typedef struct board_s
{
    int dim;
    SpaceObj* board;
} BoardObj;
也可以使用二维方法,但对于董事会结构

int boardposition(BoardObj* board, int row, int col)
{
    return row*(board->dim) + col;
}

您已将电路板空间定义为char类型,但当您的需求发生变化时会发生什么情况?您可能应该提供一个struct或typedef,如果您的需求/需求发生变化,那么进行更改就更容易了

printBoard(board, dim);
您可以只分配一个数组,其尺寸为rowsize x columsize,然后使用forumla通过计算position=row*columsize+column来查找线路板的位置

typedef char boardspace;
或者,您可以分配一个行数组,每个行包含指向列数组的指针。但这意味着您需要检查多个malloc的结果,错误处理变得更加困难

int boardposition(int dim, int row, int col)
{
    return row*dim + col;
}
使用上述板位置公式,在一维中分配板

typedef struct space_s
{
    char space;
} SpaceObj;
typedef struct board_s
{
    int dim;
    SpaceObj* board;
} BoardObj;
也可以使用二维方法,但对于董事会结构

int boardposition(BoardObj* board, int row, int col)
{
    return row*(board->dim) + col;
}

您已将电路板空间定义为char类型,但当您的需求发生变化时会发生什么情况?您可能应该提供一个struct或typedef,如果您的需求/需求发生变化,那么进行更改就更容易了

printBoard(board, dim);
您可以只分配一个数组,其尺寸为rowsize x columsize,然后使用forumla通过计算position=row*columsize+column来查找线路板的位置

typedef char boardspace;
或者,您可以分配一个行数组,每个行包含指向列数组的指针。但这意味着您需要检查多个malloc的结果,错误处理变得更加困难

int boardposition(int dim, int row, int col)
{
    return row*dim + col;
}
使用上述板位置公式,在一维中分配板

typedef struct space_s
{
    char space;
} SpaceObj;
typedef struct board_s
{
    int dim;
    SpaceObj* board;
} BoardObj;
也可以使用二维方法,但对于董事会结构

int boardposition(BoardObj* board, int row, int col)
{
    return row*(board->dim) + col;
}

您已将电路板空间定义为char类型,但当您的需求发生变化时会发生什么情况?您可能应该提供一个struct或typedef,如果您的需求/需求发生变化,那么进行更改就更容易了

printBoard(board, dim);
您可以只分配一个数组,其尺寸为rowsize x columsize,然后使用forumla通过计算position=row*columsize+column来查找线路板的位置

typedef char boardspace;
或者,您可以分配一个行数组,每个行包含指向列数组的指针。但这意味着您需要检查多个malloc的结果,错误处理变得更加困难

int boardposition(int dim, int row, int col)
{
    return row*dim + col;
}
使用上述板位置公式,在一维中分配板

typedef struct space_s
{
    char space;
} SpaceObj;
typedef struct board_s
{
    int dim;
    SpaceObj* board;
} BoardObj;
或者你可以用二维的