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

Anint*[22]可以衰减为int**,但您不能将 an 分配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;

您将 a 的地址存储在 b 中,同样您需要将地址存储parrpparr

编辑:澄清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 回答