3

重複の可能性:
C:2次元配列へのポインターを作成します

配列が定義されている場合、

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

ただし、これは「キャスト」ではありません。キャストは明示的な型変換です。上記の例では、変換は暗黙的です。

また、ポインタの種類が最初の配列を除くすべての配列の次元に依存していることにも注意してください。このコンテキストで機能する完全に「無次元」のポインター型を使用することはできません。つまり、int **ポインターは組み込みの2D配列では機能しません。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 に答える