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;
}

在上面的例子中,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;
}

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;
}

在上述程序中,需要在 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;
}

第一次调用 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
}

输出:

Hello World

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

void SayHello()
{
    cout << "Hello World" << endl;
    return; // an empty return
}

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

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

你可能感兴趣的:(C++编程基础,c++)