Arrays 结构数组初始化

Arrays 结构数组初始化,arrays,data-structures,struct,initialization,Arrays,Data Structures,Struct,Initialization,请帮忙。为什么我的打印输出总是FRC.FT(0)?< /P> < P>,在你的声明中,FO(1)不存在,并且写它是C和C++的未定义行为。 将声明更改为此,以使fo[1]成为有效元素 struct forces{ double fo[1]; double ft[1]; }; int main(void){ struct forces frc; frc.fo[0]=6; frc.fo[1]=5

请帮忙。为什么我的打印输出总是FRC.FT(0)?< /P> < P>,在你的声明中,FO(1)不存在,并且写它是C和C++的未定义行为。 将声明更改为此,以使fo[1]成为有效元素

     struct forces{
        double fo[1];
        double ft[1];
    };
    int main(void){
        struct forces frc;
        frc.fo[0]=6;
        frc.fo[1]=56;
        frc.ft[0]=567;
       printf("%.0lf\n",frc.fo[1]);
        return 0;
    } 

在C和C++(和大多数相似的语言)中,FoO(5)的声明创建了一个5元素数组,其中的有效索引值为[0 ]…[4]. int foo[1]只有一个有效的索引foo[0]


在代码中,您可以看到fo[1]代替ft[0],因为编译器将两个双变量放在内存中,它们之间没有间隙(填充)。

欢迎使用StackOverflow。这是C还是C++?你应该告诉我们语言。除此之外,在这两种语言中,数组都是基于0的,只包含N个元素。所以int foo[5]正好有5个元素,foo[0]。。。f[4]。foo[5]不存在,frc.fo[1]也不存在。谢谢。这是c代码。这是我忽略的一个常见错误。我要试一试。
struct forces{
    double fo[2];
    double ft[1];
};