不能在赋值中将'int[]'转换为'int*'

img

为啥报错呀,求解,本人刚接触c语言不久,刚开始接触指针还不是很懂,这是对着书上敲的

p 是 一维指针 int *; 而 a是二维数组,相当于 int **; 这两者类型不匹配

int **p = a; // 这样就可以了

int main()
{

    int a[3][3]={{122,1213, 33124},{111,444, 5555},{2434,5,000}};

    int *p=NULL;
    int i;
    for(p=a,i=0;i<9;i++) {
        if(i%3==0) {
            printf("\n");
        }
        printf("%5d",*(p+i));
    }
    printf("\n");
    return 0;
}

改成上面的代码试试:
运行结果如下:

img


int main()
{
    int a[3][3]={{122,1203,33124},{111,444,000},{24340,01,001}};
    int *p=NULL;
    for(p=a[0];p<a[0]+9;p++)
    {
        if((p-a[0])%3==0)
        {
        printf("\n");
        }
        printf("%6d",*p);
    }
    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^