typedef struct piece Piece;
struct piece{
char color;
char symbol;
};
int readPiece(Piece * p[]);
//因为我的代码比较长。我没有把它们都放在这里。
int main(void){
int row = 0;
int col = 0;
Piece input[LEN][LEN];
readPiece(input);
return 0;
}
//读入16*2个特定字符。
int readPiece(Piece * p[]){
int row = 0;
int col = 0;
while(row < LEN){
col = 0;
while(col < LEN){
scanf("%c%c",&(p[row][col] .color), &(p[row][col].symbol));
if((p[row][col].color == 'R' || p[row][col].color == 'G' || p[row][col].color == 'B' || p[row][col].color == 'Y') && (p[row][col] . symbol == '*' || p[row][col].symbol == '^' || p[row][col].symbol == '#' || p[row][col].symbol == '$')){
getchar();
}else{
return 0;
}
col ++;
}
row ++;
}
return 1;
}
//刚开始学C语言。我尝试通过指针将 2d 结构传递给函数,但是当我编译它时,它显示“不兼容的指针类型传递”。 所以我想问一下将 2d 结构传递给函数的正确方法是什么,以及为什么我的方法不起作用。谢谢。
最佳答案
我最近也遇到了这个问题。在函数定义 header (和函数声明)中使用 Piece (*p)[LEN]
而不是 Piece *p[]
。
*p[]
将是一个指针数组,而 (*p)[]
将是指向数组的指针。
关于c - 如何使用指针传递结构的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44689921/