C 类型强制转换指向结构类型的空指针

C 类型强制转换指向结构类型的空指针,c,arrays,struct,C,Arrays,Struct,如何将空指针强制转换为结构数组?这是我的密码: 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; } vo

如何将空指针强制转换为结构数组?这是我的密码:

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];
}

分配
S2[0]
时,我在
Func1
中遇到编译错误。如何正确键入
数组1

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

 S2[0] = ((myStruct *)Array1)[0];
或使用指针:

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

主要问题是,为什么首先要将Func1声明为void*?你会犯什么错误?试图((myStruct*)Array1)[0]?指针不是数组,也不是元素类型,而是解引用运算符。