1

我在将指针分配给位于 C 结构中的二维数组时遇到问题。代码运行但我遇到编译错误并且无法理解如何摆脱它。

一、结构

typedef struct{
  double (*cases)[9];
} myStruct;

然后我在我的主程序中声明了一个 myStryct 类型的结构和一个数组,并尝试将我的结构中的指针设置为指向这个数组:

 myStruct a;
 double myArray[5][9] = {
   {0, 1, 2, 3, 4, 5, 6, 7, 8},
   {0, 1, 2, 3, 4, 5, 6, 7, 8},
   {0, 1, 2, 3, 4, 5, 6, 7, 8},
   {0, 1, 2, 3, 4, 5, 6, 7, 8},
   {0, 1, 2, 3, 4, 5, 6, 7, 8},
 }
 a.cases = &myArray;

程序运行良好,我可以通过指针访问元素,但出现编译错误:警告:来自兼容指针类型的赋值。这里有什么问题?

4

2 回答 2

1
myStruct a;
double myArray[5][9] = {
   {0, 1, 2, 3, 4, 5, 6, 7, 8},
   {0, 1, 2, 3, 4, 5, 6, 7, 8},
   {0, 1, 2, 3, 4, 5, 6, 7, 8},
   {0, 1, 2, 3, 4, 5, 6, 7, 8},
   {0, 1, 2, 3, 4, 5, 6, 7, 8},
};
a.cases = &myArray[0];
于 2013-04-11T09:51:37.267 回答
0

问题:

void allocate(int ** universe,int n) // to assign pointer "a"  a nXn matrix //
{ 
   universe=(int **) calloc(n,sizeof(int *));
   cout<<"work3";
   int l;
   for(l=0;l<n;l++)
   universe[l]=(int *)calloc(n,sizeof(int));
}
于 2013-06-11T09:32:13.907 回答