使用指针将值返回给main函数

时间:2015-11-11 14:22:51

标签: c function

是否有其他方法可以使用main函数将值返回到void函数。我不想使用以下方式,因为我想要求用户在main函数中输入一些值,然后在void函数中检查这些值是否正确。

#include <stdio.h>
void fun_1(int *num1, int *num2) {

        printf("Enter both numbers: ");
        scanf("%d", num1);
        scanf("%d", num2);
}

int main(void) {

        int num1, num2, total;

        fun_1(&num1, &num2);

        total = num1 + num2;

        printf("%d \n", total);
}

在此代码中,我们要求用户在void函数中输入值,但我想让用户在main中输入值!

2 个答案:

答案 0 :(得分:3)

还有另一种方法可以利用全局变量,但随着程序变得越来越复杂,它可能会给你带来更多的麻烦,那么它是值得的。

如果使用全局变量将输入存储在子函数中,则可以在main()函数中直接访问它们以获取值。你不会需要你的子功能return

话虽如此,最好更改函数返回类型(如果要返回多个值,可能返回包含用户提供的值的struct)以符合您的要求。

答案 1 :(得分:1)

如果你想阅读main中的值但是在另一个函数中检查它们(例如,确保两者都是正数),你可以这样做:

#include <stdio.h>

void check_numbers(int num1, int num2, int *valid) {
    if ((num1 > 0) && (num2 > 0)) {
        *valid = 1;
    } else {
        *valid = 0;
    }
}

int main(void) {
    int num1, num2, total, valid;

    printf("Enter both numbers: ");
    scanf("%d", num1);
    scanf("%d", num2);

    check_numbers(num1, num2, &valid);
    if (valid) {
        total = num1 + num2;
        printf("%d \n", total);
    } else {
        printf("numbers are invalid\n);
    }
}