C语言允许void(泛型指针)等于其他任何类型的指针,但是当:void*p = struct str *p1;(即令void类型的指针等于结构体类型的指针)用p->使用内部元素的时候,编译器在编译的时候会报错
解决办法:重新定义结构体指针变量进行强制类型转换
举例:
1 #include<stdio.h>
2 #include<stdlib.h>
3
4 typedef struct{
5 int a;
6 int b;
7 } str;
8
9 int main (intargc, char *argv[])
10 {
11 void *p;
12 str *st, *st1;
13
14 st = (str *)malloc(sizeof(str));
15 st->a = 23;
16 st->b = 24;
17 p = st;
18 st1 = (str *)p;
19 printf("%d\n%d\n",st1->a,st1->b);
20
21 free(st);
22 return 0;
23 }
同样在函数中使用void泛型指针的时候一样要定义新的变量进行强制类型转换
如有问题,欢迎指正,感谢