1

エラーがどこにあるのかよくわかりません:

int *parr[22];  // Array of int* pointers
parr[0] = ptr1;
parr[1] = ptr2;
//... 

int *(*pparr)[22]; // A pointer to a int* array[22]
pparr = parr; // ERROR

エラーが教えてくれますerror C2440: '=' : cannot convert from 'int *[22]' to 'int *(*)[22]'

タイプが等しくないのはなぜですか?配列の名前は、配列の最初の要素への参照と同じにする必要があります。

parr => &parr[0]

その線は私には正しいようです

4

3 に答える 3

1

int*[22]は に減衰できますが、をに代入するint**ことはできません。int**int*(*)[22]

于 2012-11-10T13:17:50.330 に答える
1

そのままで、書く必要がありpparrますA pointer to a int* array[22]

pparr = &parr;

ポインター自体ではなく、ポインターにアドレスを格納する必要があります。

あなたが持っているときと同じです

int a=3;
int *b;
b=&a;

parraのアドレスをbに保存しています。同様に、 inのアドレスを保存する必要がありますpparr

編集:OPのコメントを明確にする

最初の要素のアドレスを割り当てることはできませんが、最初の要素を指しているポインターのアドレスを割り当てることができます。(したがってpparr = &parr;)

于 2012-11-10T13:17:50.730 に答える
0
int *(*pparr)[22];  //This one is an array of function-pointers returning an int pointer. 

int **pptr;  //Points to an array of pointer

だからあなたは書くことができます

pptr = parr;
于 2012-11-10T13:22:19.187 に答える