我有一个“MyStruct”数组
typedef struct MyStruct {
double a;
double b;
double c;
}MyStruct ;
....
MyStruct tab[30];
for (i=0;i<30;i++){
tab[i].a=1.0f;
tab[i].b=2.0f;
tab[i].c=3.0f;
}
for(int i=0;i<10;i++){
MyStruct s = tab[i];
....
//tab[i] correct (1,2,3)
//s incorrect (0,0,0)
}
...
当我在MyStruct s = tab[i];
上设置断点并且我在编译器中观察时,选项卡中的值是正确的。问题是我的变量's',s.a,s.b和s.c与索引i处的数组的值不同。
我不明白这个问题
答案 0 :(得分:1)
你是否准确地在这一行上有断点:
MyStruct s = tab[i];
如果是这种情况,那么分配尚未发生。转到调试器中的下一行,然后检查值。
答案 1 :(得分:0)
我认为您当前的代码没有任何问题。
唯一的可能是你在s
超出范围时进行检查。
for(int i=0;i<10;i++)
{
MyStruct s = tab[i];
int x = 0; //temp code - Put break-point here and check.
x++; //temp code
}
答案 2 :(得分:0)
MyStruct s;
memcpy(&s, tab + i, sizeof(MyStruct));
并且您的结构已正确填充。