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]?指针不是数组,也不是元素类型,而是解引用运算符。