【问题标题】:the return statement of C in a function函数中 C 的 return 语句
【发布时间】:2015-12-04 04:15:39
【问题描述】:

我是 C 语言的新手,我对 C 语言中的 return 语句有疑问:

void verifyValue(int value)
{
   return;
}

void handleValue(int value)
{
   switch(value)
   {
      case 1:
         // do something
         break;

      case 10:
         verifyValue(value);
         // the rest of code part 1
         break;
      default:
         break;           
   }
}

int main()
{
   int vlaue = 10;
   handleValue(value);

   // the rest of code part 2
}

所以verifyValue()函数将在case 10中返回,一旦它返回,代码部分1的其余部分将继续执行还是代码部分2的其余部分继续执行,从这里返回verifyValue()真的退了吗?

【问题讨论】:

  • “第 1 部分”和“第 2 部分”到底是什么意思?每个相应的return 语句将从函数返回的内容包含在其中。
  • 用一些打印语句进行测试不是比在这里发布问题更容易吗?
  • 你能用调试器测试吗?能够在 C 中使用调试器比学习语言本身更重要。
  • 是的,你说得对,我自己调试过,有时候我需要了解它是如何工作的,所以我在这里问一个问题

标签: c function return


【解决方案1】:

return 语句导致被调用的函数立即终止,因此,verifyvalue 函数中的 return 语句终止了该函数,并没有结束 handlevalue 函数。在该点之后继续执行。

【讨论】:

    【解决方案2】:

    return 语句仅从执行它的函数返回。所以这个函数:

    void verifyValue(int value)
    {
        return;
    }
    

    什么都不做。它只是立即返回。调用该函数对代码的逻辑流程没有影响。

    “其余代码第 1 部分”将执行。然后handleValue() 函数将在到达函数末尾时隐式返回。然后“其余代码第 2 部分”将执行。

    【讨论】:

      【解决方案3】:

      verifyValue() 调用之后,break 语句将首先工作,这会将控制权带到开关盒之外。之后,handleValue 函数将返回,然后“其余代码部分 2”将继续。

      【讨论】:

        【解决方案4】:
        case 10:
                 verifyValue(value);
                 // the rest of code part 1
                 break;
        

        verifyValue() 函数被调用并从该函数返回后

        // 其余代码部分 1

        被执行。 之后 break 被执行,这样你就摆脱了 switch 构造。

        稍后将控件返回给main()

        // 其余代码部分 2

        被执行。

        【讨论】:

          猜你喜欢
          • 2019-06-08
          • 2017-12-04
          • 2022-11-17
          • 2018-03-05
          • 2011-10-29
          • 2017-12-24
          • 1970-01-01
          • 2012-01-11
          • 2018-03-07
          相关资源
          最近更新 更多