• C++中编写没有参数和返回值的函数


    C++中编写没有参数和返回值的函数

    返回值为 void

    函数不需要将值返回给调用者。为了告诉编译器函数不返回值,返回类型为 void。例如:

    #include 
    
    // void means the function does not return a value to the caller
    void printHi()
    {
        std::cout << "Hi" << '\n';
        // This function does not return a value so no return statement is needed
    }
    
    int main()
    {
        printHi(); // okay: function printHi() is called, no value is returned
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在上面的例子中,printHi 函数有一个有用的行为(它打印“Hi”),但它不需要返回任何东西给调用者。因此, printHi 被赋予了一个 void 返回类型。

    当 main 调用 printHi 时,执行 printHi 中的代码,并打印“Hi”。在 printHi 结束时,控制返回到 main 并且程序继续。

    不返回值的函数称为无返回值函数(或 void 函数)。

    void 函数不需要 return 语句

    void 函数将在函数结束时自动返回给调用者。不需要 return 语句。

    可以在 void 函数中使用 return 语句(没有返回值)——这样的语句将导致函数在执行return声明时返回给调用者。无论如何,这与函数结束时发生的情况相同。因此,在void函数的末尾放一个空的return语句是多余的。

    #include 
    
    // void means the function does not return a value to the caller
    void printHi()
    {
        std::cout << "Hi" << '\n';
        return; // tell compiler to return to the caller -- this is redundant since this will happen anyway!
    } // function will return to caller here
    
    int main()
    {
        printHi();
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    void 函数不能用于需要计算值的表达式

    某些类型的表达式需要值。例如:

    #include 
    
    int main()
    {
        std::cout << 5; // ok: 5 is a literal value that we're sending to the console to be printed
        std::cout << ;  // compile error: no value provided
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在上述程序中,需要在 std::cout << 的右侧提供要打印的值。如果没有提供值,编译器将产生语法错误。由于对 std::cout 的第二次调用没有提供要打印的值,这会导致错误。

    现在考虑以下程序:

    #include 
    
    // void means the function does not return a value to the caller
    void printHi()
    {
        std::cout << "Hi" << '\n';
    }
    
    int main()
    {
        printHi(); // okay: function printHi() is called, no value is returned
    
        std::cout << printHi(); // compile error
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    第一次调用 printHi() 是在不需要值的上下文中调用的。由于函数不返回值,这很好。

    对函数 printHi() 的第二个函数调用甚至无法编译。函数 printHi 有一个 void 返回类型,这意味着它不返回值。但是,此语句试图将 printHi 的返回值发送到 std::cout 以进行打印。std::cout 不知道如何处理(它会输出什么值?)。因此,编译器会将其标记为错误。您需要注释掉这行代码才能使您的代码编译。

    例子

    如果将显示 Hello World 的工作委托给一个函数,且该函数不做别的,则它就不需要任何参数(因为它除了显示 Hello World 外,什么也不做),也无需返回任何值(因为您不指望这样的函数能提供在其他地方有用的东西)。如下示例程序演示了一个这样的函数:

    #include 
    using namespace std;
    
    void SayHello();
    
    int main()
    {
        SayHello();
        return 0;
    }
    
    void SayHello()
    {
        cout << "Hello World" << endl;
        return; // an empty return
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    输出:

    Hello World
    
    • 1

    注意到第 3 行的函数原型将函数 SayHello()的返回类型声明为 void,即不返回任何值。因此,在第 11~14 行的函数定义中, 没有 return 语句。有些程序员喜欢在这种函数末尾包含一条空的 return 语句:

    void SayHello()
    {
        cout << "Hello World" << endl;
        return; // an empty return
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    该文章会更新,欢迎大家批评指正。

    推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
    分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
    fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
    TCP/IP,协程,DPDK等技术内容
    点击立即学习:C/C++后台高级服务器课程

  • 相关阅读:
    【 web网页设计期末课程大作业】基于HTML+CSS+JavaScript智慧路灯综合管理系统
    哈希方法总结
    Kubernetes(k8s)的Volume数据存储介绍和各种基本储存类型(EmptyDir、HostPath、NFS)的使用
    POJ 2104 K-th Number 平方分割(分桶法)
    判断经纬度是否在某个城市内
    数字图像处理(入门篇)四 像素关系
    一文搞懂MySQL事务的隔离性如何实现|MVCC
    高速信号处理板资料保存:383-基于kintex UltraScale XCKU060的双路QSFP+光纤PCIe 卡设计原理图
    会议OA项目(待开会议&历史会议&所有会议)
    继NOIP2022结束以后(文化课复建)
  • 原文地址:https://blog.csdn.net/qq_41317716/article/details/132913912