我使用cdecl并将其定义为“将papi声明为指针指向int的数组10”,因此我以这种方式编写代码。
int i = 10;
int *api[10];
api[0] = &i;
int *(*papi[10]);
papi = &api;我得到一个错误:“数组类型'int (10)‘是不可分配的”
什么是正确的方式使用木瓜?
发布于 2014-07-14 13:46:16
我将短语“声明爸爸为指针指向int的数组10”解释为声明由10个指针组成的指向int.:的指针数组。)
尝试以下几点
#include < stdio.h>
int main( void )
{
int i = 10;
int *api[10] = { &i };
int **papi[10];
papi[0] = api;
printf( "%d\n", ***papi );
}输出是
10发布于 2014-07-14 13:35:12
数组名是不可修改的l-值。不能将它们用作=运算符的左操作数。papi是一个数组名。变化
int *(*papi[10]); 至
int *(*papi)[10]; // papi is a pointer to an array of 10 pointers to int发布于 2014-07-14 13:38:26
不能将数组分配给C中的数组,您似乎要做的是:
int i = 10;
int *api[10];
api[0] = &i;
int *(*papi)[10];
papi = &api;它将papi声明为指向指向int的10个指针的数组的指针。这是&api的类型,它使用指向int的10元素指针数组的地址。
HTH
https://stackoverflow.com/questions/24737699
复制相似问题