为什么函数不会改变变量?

在这段代码中我似乎得到零,我不太熟悉为什么我不能用我创建的函数改变变量长度。 任何帮助都可能有用。

#include  double get_length(double a); int main(int argc, char* argv[]) { double length = 0; get_length(length); printf("%lf", length); return 0; } double get_length(double a) { printf("What is the rectangle's length?\n"); scanf("%lf", &a); return a; } 

打印时,返回0.0000

您没有存储返回值。 更改:

 get_length(length); 

至:

 length = get_length(length); 

执行此操作时无需传递length

另一种方法是传递一个地址:

 #include  void get_length(double * a); int main(int argc, char* argv[]) { double length = 0; get_length(&length); printf("%f", length); return 0; } void get_length(double * a) { printf("What is the rectangle's length?\n"); scanf("%lf", a); } 

请注意, %f ,而不是%lf ,是printf() double的正确格式说明符。 但是,对于scanf() ,使用%lf是正确的。

C是“按值传递”,这意味着实际复制了值。因此,使用引用更改值实际上不会更改原始引用。

有两种方法:

1)存储到本地值然后捕获返回值:

 length = get_length() ... double get_length() { double a; printf("What is the rectangle's length?\n"); scanf("%lf", &a); return a; } 

2)传递指针:

 get_length(&length) ... double get_length(double *length) { printf("What is the rectangle's length?\n"); scanf("%lf", length); }