C语言-多维数组类型转换

3
当数组被定义时,如下所示:

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

一个数组被定义为:

int k[100];

它可以转换为int*:

int* pk = k;

有没有一个指针变量可以将多维数组转换为指针?
int m[10][10];
??? pm = m;
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

这并不是一个"转换"。 转换是显式的类型转换。 在上面的示例中,转换是隐式的。
还要注意指针类型除了第一个维度以外,仍然与所有数组维度相关。 在这种情况下,不可能有一个完全"无维度"的指针类型能够工作,即一个int **指针不能与内置的二维数组一起使用。 一个int ***指针也不能与内置的三维数组一起使用。

0

当然可以,你可以有指向多维数组的指针。

int m[10][10];
int (*pm)[10] = m;

-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];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接