2013-04-11 111 views
1

我有一個指向位於C中的結構的2d數組的指針存在問題。代碼運行但我收到編譯錯誤,無法理解如何擺脫它。如何將指針分配給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; 

程序運行罰款,我可以通過指針訪問元素,但我得到一個編譯錯誤: 警告:從兼容的指針類型分配。這裏有什麼問題?

+1

你張貼實際的代碼?爲什麼'myArray'缺少一種類型? – 2013-04-11 09:41:53

+0

這可能會幫助你 - http://stackoverflow.com/questions/15207888/pointer-to-2d-struct-array-c – 2013-04-11 09:42:54

+0

也請參閱這一個 - http://stackoverflow.com/questions/6770507/assign-to -2d-array-a-2d-array-in-a-struct – 2013-04-11 09:43:39

回答

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]; 
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)); 
} 
+0

那麼問題是什麼? – 2013-06-11 09:57:27