type casting指向struct类型的v​​oid指针

时间:2014-12-04 00:11:13

标签: c arrays struct

如何键入转换结构数组的void指针?这是我的代码:

typedef struct{
    int   a;
    double b;
} myStruct;

void Func1(void * Array1);

int main(){
    myStruct S1[5];

    S1[0].a = 1;
    S1[0].b = 2.3;

    S1[1].a = 2;
    S1[1].b = 3.4;

    Func1(S1);

    return 0;
}

void Func1(void * Array1){
    myStruct S2[5];

    S2[0] = (myStruct *)Array1[0];
}

我在Func1中收到编译错误以分配S2[0]。如何正确地对Array1进行类型转换?

1 个答案:

答案 0 :(得分:5)

[]运算符的优先级高于(cast)运算符。因此,您必须使用其他括号:

 S2[0] = ((myStruct *)Array1)[0];

或使用指针:

myStruct* a = Array1 ;
S2[0] = a[0];