我不太明白错误在哪里:
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]所以这条线在我看来是对的
发布于 2012-11-10 21:17:51
因为pparr是A pointer to a int* array[22],所以你需要写
pparr = &parr;您需要将地址存储在指针中,而不是指针本身。
这就像你有了
int a=3;
int *b;
b=&a;您将a的地址存储在b中,同样,您需要将parr的地址存储在pparr中
编辑:澄清OP的评论
您不能指定第一个元素的地址,但可以指定指向第一个元素的指针的地址。(因此为pparr = &parr;)
发布于 2012-11-10 21:17:50
int*[22]可以衰减为int**,但您不能将int**分配给int*(*)[22]。
发布于 2012-11-10 21:22:19
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;https://stackoverflow.com/questions/13322345
复制相似问题