好吧,我遇到了一个古怪,也许有人可以解释它.源代码是(c ++ 11):
?#?include? <stdio.h>
struct xyz_ {
float xyz[3];
float &x = xyz[0];
float &y = xyz[1];
float &z = xyz[2];
};
int main(int argc, char *argv[])
{
xyz_ xyz;
xyz.x = 0;
xyz.y = 1;
xyz.z = 2;
xyz.xyz[1] = 1;
printf("as array %f %f %f\n",xyz.xyz[0],xyz.xyz[1],xyz.xyz[2]);
printf("as elements %f %f %f\n",xyz.x,xyz.y,xyz.z);
int sizexyz = sizeof(xyz);
int sizefloat = sizeof(float);
printf("float is %d big, but xyz is %d big\n",sizefloat,sizexyz);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
as array 0.000000 1.000000 2.000000
as elements 0.000000 1.000000 2.000000
float is 4 big, but xyz is 24 big
Run Code Online (Sandbox Code Playgroud)
所以结构按照我的预期工作,但尺寸是它应该的两倍.在结构中使用chars而不是float会在运行时产生段错误.我想使用struct xyz_作为浮点数组或单个浮点元素.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |