解释为什么我得到:来自不兼容指针类型的警告分配

时间:2016-11-08 20:01:22

标签: c arrays pointers

我试图制作一个tic tac toe程序,但我遇到了警告。我知道代码仍然编译,但我想知道为什么我有这个警告以及我可以做些什么来修复它。

当p = a时,我收到警告;

void clean(){
    char a[N][N], *p;
    p = a;
    for(int i = 0; i < N; i++){
        for(int j = 0; j < N; j++){
            *p++ = '_';
        }
    }
    display(a);
}
void display(char a[N][N]){
    for(int i = 0; i < N; i++){
        for(int j = 0; j < N; j++){
            printf("%c ", a[i][j]);
        }
        printf("\n");
    }
}

2 个答案:

答案 0 :(得分:2)

您的clean功能应为:

void clean(void){
    char a[N][N];

    for(int i = 0; i < N; i++){
        for(int j = 0; j < N; j++){
            a[i][j] = '_';
        }
    }
    display(a);
}

使用p指针绝对没有优势,除了你的代码不太可读。

答案 1 :(得分:-1)

a [] []是n char的数组,因此&amp; a是指向N,N个字符数组的指针。 这与指向单个char的指针不兼容,因为p是指向char的指针 Jst解释