3

可能重复:
C:创建指向二维数组的指针

定义数组时,如

int k[100];

它可以转换为 int*:

int* pk = k;

它有一个指针变量可以转换为多维数组吗?

int m[10][10];
??? pm = m;
4

3 回答 3

5
int m[10][20];
int (*pm)[20] = m; // [10] disappears, but [20] remains

int t[10][20][30];
int (*pt)[20][30] = m; // [10] disappears, but [20][30] remain

不过,这不是“演员”。Cast 是一种显式类型转换。在上述示例中,转换是隐式的。

并不是说指针类型仍然依赖于除第一个之外的所有数组维度。不可能有一个完全“无量纲”的指针类型可以在这种情况下工作,即int **指针不能与内置的二维数组一起工作。int ***带有内置 3D 数组的指针也不会。

于 2012-12-04T07:35:31.260 回答
0

是的,当然,您可以拥有指向多维数组的指针。

int m[10][10];
int (*pm)[10] = m;
于 2012-12-04T07:39:53.753 回答
-2

这个怎么样:

    int k[100];
int* pk = k;
int m[10][10];
int **ptr = (int **) malloc(10 * sizeof(int*));
for(int i=0;i<10;i++)
{
    ptr[i] = m[i];
}
于 2012-12-04T07:42:30.943 回答