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;
}
请协助。为什么我的打印输出总是frc.ft [0]?
答案 0 :(得分:1)
使用您的声明,fo [1]不存在,并且对其进行写入对于C和C ++是未定义的行为。
更改您的声明以使fo [1]为有效元素
struct forces{
double fo[2];
double ft[1];
};
在C和C ++(以及大多数相似的语言)中,foo [5]的声明创建一个5元素的数组,其有效索引值为[0] ... [4]。 int foo [1]仅具有有效的索引foo [0]
在代码中,您看到fo [1]代替了ft [0],因为编译器将两个double变量放到了内存中,并且它们之间没有间隙(填充)。