我是c ++指针的新手,我有一个从指针获取值的问题.
我有一个指针verticesPosBegin,它指向用于保存顶点位置的数组的开头.每个顶点存储为3分量浮点矢量(xyz).
我需要从中获取每个顶点并访问其x,y,z值.
我是通过以下方式做到的:
NxVec3* positions = (NxVec3*)data.verticesPosBegin;
for(int i=0;i<nrVertices;i++)
{
NxVec3* p1 = (NxVec3*)positions;
printf("Vertex coordinates x: %d, y: %d, z: %d\n", p1->x, p1->y, p1->z);
positions++;
}
Run Code Online (Sandbox Code Playgroud)
(NxVec3是由我使用的物理引擎定义的类型,它基本上是一种形式的结构(float x,float y,float z))
但这不会得到坐标的值,但我想,地址,因为它们代表非常大的数字.任何帮助将不胜感激.
根据你的陈述,p1->x,p1->y和p1->z有型的float,对吗?如果是这样,您将不正确的格式字符串传递给printf.该%d标志是整数.你可能想要这个%f标志.您获得的巨大数字不是地址,而是浮点值,转换为双精度,然后它们的位模式被解释为整数,尽管它在技术上是未定义的行为.
http://en.cppreference.com/w/cpp/io/c/fprintf
如果你使用cout,你不必担心这样的事情,因为它是类型安全的.
PS
停止施法.它只会隐藏编译时间,并将它们转换为运行时错误,这种情况要严重得多.
| 归档时间: |
|
| 查看次数: |
447 次 |
| 最近记录: |