为什么函数不会改变变量?
在这段代码中我似乎得到零,我不太熟悉为什么我不能用我创建的函数改变变量长度。 任何帮助都可能有用。
#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); }