我不太清楚错误在哪里:
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]
所以这条线似乎对我来说
答案 0 :(得分:1)
int*[22]
可以拒绝int**
,但您无法将int**
分配给int*(*)[22]
。
答案 1 :(得分:1)
由于pparr
为A pointer to a int* array[22]
,因此您需要编写
pparr = &parr;
您需要在指针中存储地址而不是指针本身。
就像你有
时一样int a=3;
int *b;
b=&a;
您要存储b中的地址,同样需要在parr
pparr
的地址
编辑:澄清OP的评论
您不能指定第一个元素的地址,而是指向指向第一个元素的指针的地址。(因此pparr = &parr;
)
答案 2 :(得分: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;