我使用了cdecl并将其定义为“将papi声明为指向int的指针的数组10” 所以我用这种方式编写代码
int i = 10;
int *api[10];
api[0] = &i;
int *(*papi[10]);
papi = &api;
我得到一个错误,说“数组类型'int ( [10])'不可分配”
使用papi的正确方法是什么?
答案 0 :(得分:3)
数组名称是不可修改的l值。您不能将它们用作=
运算符的左操作数。 papi
是一个数组名称。改变
int *(*papi[10]);
到
int *(*papi)[10]; // papi is pointer to an array of 10 pointers to int
答案 1 :(得分:2)
您不能在C中分配数组。您似乎想要做的是:
int i = 10;
int *api[10];
api[0] = &i;
int *(*papi)[10];
papi = &api;
将papi
声明为指向int
的10个指针数组的指针。这是&api
的类型,它将10个元素的指针数组的地址转换为int
。
HTH
答案 2 :(得分:1)
我解释了短语“将papi声明为指向指向int的指针的数组10”,因为它声明了一个指向int的10个指针的数组。:)
尝试以下
#include < stdio.h>
int main( void )
{
int i = 10;
int *api[10] = { &i };
int **papi[10];
papi[0] = api;
printf( "%d\n", ***papi );
}
输出
10