2012-03-12 125 views
0

的另一名成員這是我的代碼,我想指出arrayPointer到結構的數組成員:如何在結構指向一個指向同一結構

int main() 
{ 

typedef struct { 
    int array[3][2]; 
    int(*arrayPtr)[2]; 
} myStruct; 

myStruct x[2] = 
{ 
    { { {1,2}, {3,4}, {5,6} }, .array }, 
    { { {6,5}, {4,3}, {2,1} }, .array } 
}; 
} 

不過,我在'}'令牌'編譯器錯誤之前在x[2]初始化的內部行中獲得「語法錯誤」。

+0

它爲什麼不起作用?如果您遇到編譯器錯誤,請將它們給我們。如果您收到意想不到的輸出,請告訴我們輸出。 – 2012-03-12 17:01:06

+0

在使用dev-C++ IDE進行測試之前,我將其放入實際代碼中,但在第11行和第12行的'}'令牌之前出現了「語法錯誤」。 – 2012-03-12 18:35:47

+0

這是非常有用的信息。提出問題的一般準則:告訴我們你做了什麼(編寫代碼,試圖編譯它),你期望發生什麼(它編譯乾淨),以及實際發生了什麼(具體的編譯器錯誤)。 – 2012-03-12 21:33:44

回答

2

除了初始化位之外,你的數組指針並不是合適的類型。然而,這應該起作用:

int main() 
{ 

    typedef struct { 
    int array[3][2]; 
    int (*arrayPtr)[3][2]; 
    } myStruct; 

myStruct x[2] = 
    { 
    { { {1,2}, {3,4}, {5,6} }, &x[0].array }, 
    { { {6,5}, {4,3}, {2,1} }, &x[1].array } 
    }; 
} 
+0

爲什麼不能? 'int(*)[2]'可以指向int [3] [2]' – asaelr 2012-03-12 16:08:51

+0

的第一個成員是的,這也可以。我考慮過了,但OP剛纔說「給陣列成員」。在這種情況下'&x [0] .array [0]'就是票據。 – FatalError 2012-03-12 16:10:27

+0

爲什麼int(* arrayPtr)[3] [2]而不只是int * arrayPtr? – Alecs 2012-03-12 16:38:09