游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2003|回复: 6

关于指针转换后下标引用的问题

[复制链接]

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
发表于 2007-8-30 22:37:00 | 显示全部楼层 |阅读模式
设sVertex 是一个只含一个D3DXVECTOR3 _Vec; 的结构
有一个char *cPtr 和一个 sVertex *vPtr
现在用LockVertexBuffer(...,(void**)&cPtr );
然后再 vPtr = (sVertex*)cPtr;
那么现在问:  是否 &cPtr[12] == &vPtr[1]  ??

楼主才疏学浅,忘各位高人路过指点...

97

主题

590

帖子

590

积分

高级会员

Rank: 4

积分
590
QQ
发表于 2007-8-31 00:04:00 | 显示全部楼层

Re:关于指针转换后下标引用的问题

笔误了吧,应该是&cPtr[1] == &vPtr[1],不太明白你LOCK一下什么意思
vPtr = (sVertex*)cPtr;这时vPtr虽然是sVertex类型,但是已经指向cPtr的内容,所以&cPtr[1] == &vPtr[1]成立,但是两者内容因为类型不同,无法比较

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2007-8-31 00:11:00 | 显示全部楼层

Re:关于指针转换后下标引用的问题

……楼上理解错了吧……楼主应该没笔误。一个VECTOR是12个BYTE,所以&vPtr[1] = &cPtr[12]了,这两个地址是相等的。

8

主题

390

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-8-31 09:34:00 | 显示全部楼层

Re:关于指针转换后下标引用的问题

要看这个结构的对齐方式。结构体往往都有有padding bytes。看结构体编译时的选项。

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
 楼主| 发表于 2007-8-31 09:50:00 | 显示全部楼层

Re:关于指针转换后下标引用的问题

  感谢楼上各位热心的回答!
再问下,有padding bytes存在的话,那就是用vPtr[1] 比 cPtr[12]要更安全吧.
但是一本书上的例子里用的是cPtr[12]...我把它改成vPtr[1]之后反而不行...
盼解~

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
 楼主| 发表于 2007-8-31 12:28:00 | 显示全部楼层

Re:关于指针转换后下标引用的问题

ding

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2007-8-31 19:49:00 | 显示全部楼层

Re:关于指针转换后下标引用的问题

调试……跟踪……>OK!
哈……
对齐方式确实影响类的大小,上面只是就事论事……且各种编译器的对齐字节默认值是不同的……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 02:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表