首先要理解一个问题,二维数组在内存里面的存放是连续的,多维数组可以理解为是使用上的语法糖。int arr[2][2] = { { 1, 2 }, { 3, 4 } }; int* p = (int*)arr; for (int i = 0; i < 4; i++) printf("%d ", p[i]); 输出是:1 2 3 4而 int** p; 表明 p 指向的是一个 int* 的指针,这明显是不对的。如果你一定要用指针的化,也只能是: int(*p)[1] = arr; 这么用才可以。
首先要理解一个问题,二维数组在内存里面的存放是连续的,多维数组可以理解为是使用上的语法糖。
而 int** p; 表明 p 指向的是一个
int*
的指针,这明显是不对的。如果你一定要用指针的化,也只能是:int(*p)[1] = arr;
这么用才可以。