您的位置:首页 > 其它

void类型的指针指向结构体,如何用->引用结构体内部元素

2018-02-28 16:25 357 查看
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泛型指针的时候一样要定义新的变量进行强制类型转换
如有问题,欢迎指正,感谢
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐