指针转化问题

[复制链接]
 楼主| xsgy123 发表于 2012-7-21 22:23 | 显示全部楼层 |阅读模式
定义程序段如下:
typedef struct _Position{
int x;
int y;
}Position;
int test(void *p){
Position pos;

pos.x = (Position)p.x;
pso.y = (Position)p.y;

}
但是编译的时候出现错误。请教,关于指针的强制类型转换应该如何更改
秋天落叶 发表于 2012-7-21 22:34 | 显示全部楼层
多使用圆括号来表示操作符结合优先级
虽说我的风格已经偏向于过度使用,不过起码用不着担心编译器弄错我的意思
dfsa 发表于 2012-7-21 22:41 | 显示全部楼层
p要转化成指向Position类型的指针,所以应该是:
pos.x = ((Position *)p)->x;
pos.y = ((Position *)p)->y;
无冕之王 发表于 2012-7-21 22:54 | 显示全部楼层
LS的方法可行
gxgclg 发表于 2012-7-21 22:55 | 显示全部楼层
楼主首先要分清楚类型
wjiujiu 发表于 2012-8-2 12:23 | 显示全部楼层
pos.x 是int型,(Position)p.x强制转换成了struct _Position,pos.x=(Position)p.x 的等号两边数据类型不一致,所以编译会出错。
wjiujiu 发表于 2012-8-2 12:26 | 显示全部楼层
(Position)p.x似乎也写错了吧,应该是(Position)(*p).x 或者 (Position)p->x吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部