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

s s*_*s s 0 c double return function

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

     #include <stdio.h>
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;
}
Run Code Online (Sandbox Code Playgroud)

打印时,返回0.0000

Cro*_*man 6

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

get_length(length);
Run Code Online (Sandbox Code Playgroud)

至:

length = get_length(length);
Run Code Online (Sandbox Code Playgroud)

length当你这样做时没有必要通过.

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

#include <stdio.h>

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);
}
Run Code Online (Sandbox Code Playgroud)

需要注意的是%f,不是%lf,是一个正确的格式说明doubleprintf().但是,使用%lf是正确的scanf().