关于结构体强制转换的问题

qq_41142264 2017-11-27 02:51:22
在读程序的时候遇到一个小问题,下面是程序中的一个小部分,DM_Swarm *swarm = (DM_Swarm*)dm->data 这个语句是什么意思呢? 是将结构体dm中的成员data强制转化为DM_Swarm型结构体? 我是一个c语言的新手,不知道我的理解对不对,还请大神指明!谢谢!

642: PETSC_EXTERN PetscErrorCode DMSwarmRestoreField(DM dm,const char fieldname[],PetscInt *blocksize,PetscDataType *type,void **data)
643: {
644: DM_Swarm *swarm = (DM_Swarm*)dm->data;
645: DataField gfield;

649: DataBucketGetDataFieldByName(swarm->db,fieldname,&gfield);
650: DataFieldRestoreAccess(gfield);
651: if (data) *data = NULL;
652: return(0);
653: }
...全文
225 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
heronism 2017-11-27
  • 打赏
  • 举报
回复
// dm->data一定是个指针(指向DM_Swarm型变量)或字符数组(原样存储了 DM_Swarm结构),这样才具备转换的条件
 DM_Swarm *swarm = (DM_Swarm*)dm->data;
paschen 2017-11-27
  • 打赏
  • 举报
回复
将dm->data转换为指向DM_Swarm结构体的指针类型,通常来说dm->data也是一个指针类型,这里是在做指针类型的转换,转换为DM_Swarm*类型,而不是转换为结构体类型
自信男孩 2017-11-27
  • 打赏
  • 举报
回复
这个是强制类型转换,即将dm结构体下的data强制转换位DM_Swarm *类型; 如果data是char *类型的,那么就会将字符数组转换位DM_Swarm类型的格式;

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧