打印

指针转化问题

[复制链接]
940|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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的方法可行

使用特权

评论回复
5
gxgclg| | 2012-7-21 22:55 | 只看该作者
楼主首先要分清楚类型

使用特权

评论回复
6
wjiujiu| | 2012-8-2 12:23 | 只看该作者
pos.x 是int型,(Position)p.x强制转换成了struct _Position,pos.x=(Position)p.x 的等号两边数据类型不一致,所以编译会出错。

使用特权

评论回复
7
wjiujiu| | 2012-8-2 12:26 | 只看该作者
(Position)p.x似乎也写错了吧,应该是(Position)(*p).x 或者 (Position)p->x吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝