如何在C中的struct中分配指向2D数组的指针?

时间:2013-04-11 09:39:45

标签: c pointers

我在分配指向位于C中的结构中的2d数组的指针时出现问题。代码运行但我收到编译错误,无法理解如何摆脱它。

首先,结构

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;

程序运行罚款,我可以通过指针访问元素,但我得到一个编译错误:  警告:从兼容指针类型分配。这有什么问题?

2 个答案:

答案 0 :(得分: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];

答案 1 :(得分: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));
}