数组中的结构值在C中返回错误的值

时间:2013-12-31 13:45:43

标签: c arrays struct

我有一个“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处的数组的值不同。

我不明白这个问题

3 个答案:

答案 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));

并且您的结构已正确填充。