首页 文章

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

提问于
浏览
1

我有一个问题,分配指向位于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
    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

    问题:

    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));
    }
    

相关问题