2012-03-12 133 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