可能重複:
C: create a pointer to two-dimensional arrayÇ - 多維數組的鑄造
當一個陣列被定義,如
int k[100];
它可被鑄造爲int *:
int* pk = k;
它有一個指針變量的多維陣列可被強制轉換爲?
int m[10][10];
??? pm = m;
可能重複:
C: create a pointer to two-dimensional arrayÇ - 多維數組的鑄造
當一個陣列被定義,如
int k[100];
它可被鑄造爲int *:
int* pk = k;
它有一個指針變量的多維陣列可被強制轉換爲?
int m[10][10];
??? pm = m;
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 **
指針不會與一個內置的2D陣列工作。帶有內置3D陣列的int ***
指針也不會。
是ofcourse,您可以指向多維數組。
int m[10][10];
int (*pm)[10] = m;
如何:
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];
}