首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指针数组和指向指针数组的指针

指针数组和指向指针数组的指针
EN

Stack Overflow用户
提问于 2012-11-10 21:12:22
回答 3查看 357关注 0票数 1

我不太明白错误在哪里:

代码语言:javascript
复制
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]'

为什么类型不相等?数组的名称应等于对数组的第一个元素的引用,如下所示

代码语言:javascript
复制
parr => &parr[0]

所以这条线在我看来是对的

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-10 21:17:51

因为pparrA pointer to a int* array[22],所以你需要写

代码语言:javascript
复制
pparr = &parr;

您需要将地址存储在指针中,而不是指针本身。

这就像你有了

代码语言:javascript
复制
int a=3;
int *b;
b=&a;

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

编辑:澄清OP的评论

您不能指定第一个元素的地址,但可以指定指向第一个元素的指针的地址。(因此为pparr = &parr;)

票数 1
EN

Stack Overflow用户

发布于 2012-11-10 21:17:50

int*[22]可以衰减为int**,但您不能将int**分配给int*(*)[22]

票数 1
EN

Stack Overflow用户

发布于 2012-11-10 21:22:19

代码语言:javascript
复制
int *(*pparr)[22];  //This one is an array of function-pointers returning an int pointer. 

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

这样你就可以写

代码语言:javascript
复制
pptr = parr;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13322345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档