c - 如何使用指针传递结构的二维数组

标签 c pointers struct

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 pointer to array/array of pointers disambiguation

关于c - 如何使用指针传递结构的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44689921/

相关文章:

c - 用1随机填充100X100矩阵的100格

比较C中的unsigned char数组

C 中的 union 解引用和递减

C struct数组赋值问题

objective-c - 在 Objective-C 中转换为结构

c - 在 C 中使用 fwrite 的错误 int 值

c - 从文件读取时程序崩溃。 C

c - 函数错误,在 'conflicting type'编译时出现 'C'

c - 给定的字符串是否可转换为整数

c++ - 如何从 char* 函数返回指针