我不太明白这里的错误在哪里:
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]
所以这条线对我来说似乎是对的
最佳答案
因为 pparr
是 A pointer to a int* array[22]
所以你需要写
pparr = &parr;
您需要在指针中存储地址而不是指针本身。
当你有的时候是一样的
int a=3;
int *b;
b=&a;
你在b中存储了a的地址,同样你需要在pparr
中存储parr
的地址
编辑:澄清 OP 的评论
您不能分配第一个元素的地址,而是指向第一个元素的指针的地址。(因此 pparr = &parr;
)
关于c++ - 指针数组和指向指针数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13322345/