1

C の構造体にある 2 次元配列へのポインターの割り当てに問題があります。コードは実行されますが、コンパイル エラーが発生し、それを取り除く方法がわかりません。

まず、構造体

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

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 に答える