c++ - 指针数组和指向指针数组的指针

标签 c++ c pointers

我不太明白这里的错误在哪里:

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]

所以这条线对我来说似乎是对的

最佳答案

因为 pparrA 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/

相关文章:

c - 在编译时重命名符号而不以跨平台方式更改代码

c - 如何在 C 中比较 char 指针和汽车

c - 如何正确存储strtok

c++ - C++ (windows) 中的分配数及其可预测性

c++ - (重新)将 vector 初始化为具有初始值的特定长度

c++ - 当摆脱模偏差时,min = -upper_bound % upper_bound;//如何工作?

c - 从 C 中的命令行复数化字符串

c - 如何构建axis2c非官方源代码

c - 结构名称 - 指针

c++ - 使用指针 C++ 更改内存位置的值