多级指针使用多维数组名初始化

int a[3][4] = {
  {1, 2, 3, 4},
  {1, 2, 3, 4},
  {1, 2, 3, 4}
};
int **ptr = a;
运行结果及报错内容

编译时显示:
cannot convert 'int ()[4]' to 'int*' in initialization

因为之前概念中提到,数组名就是const指针,二维数组名应该就是指针的指针,不知道为什么这里不能用数组名来初始化这个指针。
请各位帮忙解答下疑惑

数组好像只能退化一层


    int a[3][4] = {{1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4}};

    using intarr = int[4];
    intarr *ptrs = a;

    int b[3] = {0, 0, 0};
    int *ptrb = b;