C编程:如何返回main并调用另一个函数?

1 c return return-value

#include <stdio.h>
#include <stdlib.h>

int get_num(int num);
void read_num(int num);

int main()
{
  int num;
  do
  {
    get_num(num);
    if(num == 1)
      read_num(num);

   }while(num != 0);
 }

 int get_num(int num)
 {
   printf("Please enter an integer from 0 and 2\n");
   scanf("%d", &num);
   if (num == 1)
     return num;
 }

 void read_num(int num);
 {
   printf("Hello.\n");
 }
Run Code Online (Sandbox Code Playgroud)

当用户输入1时,read_num函数永远不会被调用?我不明白为什么?我以为返回num; 返回返回main的num.如果num == 0,则程序终止,如果num == 1,则应调用read_num函数.

Seb*_*ian 5

你的代码有很多错误: main()并且getNum()都被声明为返回一个int,但是main()从不返回任何东西,getNum()只有当用户输入时才返回1.如果有一个函数返回除了之外的任何函数void,请确保每个可能的控制流都有适当的return语句.

然后是按值调用与按引用调用的问题.你应该真的看起来,因为这不是解释的正确的地方,很多人写的比我更好.

read_num(num); num在这里是未定义的,一旦你知道C如何传递参数,你可能会更好地理解.

返回值也是如此.C中的函数返回值(由返回类型声明为int get_num().当你调用这样的函数时,你可以将return值赋给变量.在main中你可以写int number = get_num()

您的代码可能看起来有点像,但我不确定这是否是您真正想要它做的:

int main()
{
    int num;
    do {
        num = get_num();
        if(num == 1) {
            printf("%d\n", num);
        }   
    } while(num != 0);
    return 0;
}

int get_num(int num)
{
    printf("Please enter an integer from 0 and 2\n");
    scanf("%d", &num);
    if (num == 1)
        return num;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)