如何键入转换结构数组的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
进行类型转换?
答案 0 :(得分:5)
[]
运算符的优先级高于(cast)
运算符。因此,您必须使用其他括号:
S2[0] = ((myStruct *)Array1)[0];
或使用指针:
myStruct* a = Array1 ;
S2[0] = a[0];