我试图写一小部分更大的代码,最终输入一个结构并使用输入的值来做一些船的体积计算。我试图创建一个结构然后在我的函数中(目前我没有函数,而我只是从我的函数中调用它),我想给出结构值。由于最终的音量计算很长,我试图避免使用类似" new_boat.L1"每次我需要使用L1值。为此,我使用以下代码:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
struct boat {
double L1;
double L2;
double Lhull;
double C;
double delta;
double mass;
};
int main() {
// make two people structures
struct boat new_boat;
double L1, L2, C;
new_boat.L1 = L1;
new_boat.L2 = L2;
new_boat.C = C;
L1 = 17.6;
L2 = 4;
C = sqrt((new_boat.L1*new_boat.L1) + (new_boat.L2*new_boat.L2));
printf("\nL1 = %lf\n L2 = %lf\n, C = %lf\n", L1, L2, C);
return 0;
}
我试图输入L1,L2和C的值没有被传递到结构中,我不确定如何做到这一点,所以这些值将被保存并可以使用稍后用他们较短的名字叫。希望这个解释有意义!任何帮助将非常感激。提前谢谢!
答案 0 :(得分:1)
您不会初始化L1
,L2
和C
。它们包含垃圾,因此new_boat
也会包含垃圾。
此版本应按预期工作:
int main() {
// make two people structures
struct boat new_boat;
double L1, L2, C;
L1 = 17.6;
L2 = 4;
C = sqrt((L1*L1) + (L2*L2));
new_boat.L1 = L1;
new_boat.L2 = L2;
new_boat.C = C;
printf("\nL1 = %lf\n L2 = %lf\n, C = %lf\n", L1, L2, C);
return 0;
}
答案 1 :(得分:0)
new_boat.L1 = L1;
new_boat.L2 = L2;
new_boat.C = C;
当你这样做时,你不会让局部变量引用结构变量。您正在将局部变量值复制到结构变量中。
如果要引用结构变量,可以使用指针,指向结构变量。像这样:
struct boat new_boat;
double *L1, *L2, *C;
L1 = &new_boat.L1;
L2 = &new_boat.L2;
C = &new_boat.C;
*L1 = 17.6;
*L2 = 4;
*C = sqrt((*L1) * (*L1) + (*L2) * (*L2));
希望这会对你有所帮助。
答案 2 :(得分:0)
分配是通过值完成的,而不是通过变量完成的。例如,在分配new_boat.L1 = L1时,尚未将L1设置为任何内容。
在分配new_boat之前尝试设置L1,L2和C:
L1 = 17.6;
L2 = 4;
C = sqrt((L1*L1) + (L2*L2));
new_boat.L1 = L1;
new_boat.L2 = L2;
new_boat.C = C;