C++中编写没有参数和返回值的函数
C++中编写没有参数和返回值的函数
返回值为 void
函数不需要将值返回给调用者。为了告诉编译器函数不返回值,返回类型为 void。例如:
#include <iostream>// 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 returnedreturn 0;
}
在上面的例子中,printHi 函数有一个有用的行为(它打印“Hi”),但它不需要返回任何东西给调用者。因此, printHi 被赋予了一个 void 返回类型。
当 main 调用 printHi 时,执行 printHi 中的代码,并打印“Hi”。在 printHi 结束时,控制返回到 main 并且程序继续。
不返回值的函数称为无返回值函数(或 void 函数)。
void 函数不需要 return 语句
void 函数将在函数结束时自动返回给调用者。不需要 return 语句。
可以在 void 函数中使用 return 语句(没有返回值)——这样的语句将导致函数在执行return声明时返回给调用者。无论如何,这与函数结束时发生的情况相同。因此,在void函数的末尾放一个空的return语句是多余的。
#include <iostream>// 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 hereint main()
{printHi();return 0;
}
void 函数不能用于需要计算值的表达式
某些类型的表达式需要值。例如:
#include <iostream>int main()
{std::cout << 5; // ok: 5 is a literal value that we're sending to the console to be printedstd::cout << ; // compile error: no value providedreturn 0;
}
在上述程序中,需要在 std::cout << 的右侧提供要打印的值。如果没有提供值,编译器将产生语法错误。由于对 std::cout 的第二次调用没有提供要打印的值,这会导致错误。
现在考虑以下程序:
#include <iostream>// 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 returnedstd::cout << printHi(); // compile errorreturn 0;
}
第一次调用 printHi() 是在不需要值的上下文中调用的。由于函数不返回值,这很好。
对函数 printHi() 的第二个函数调用甚至无法编译。函数 printHi 有一个 void 返回类型,这意味着它不返回值。但是,此语句试图将 printHi 的返回值发送到 std::cout 以进行打印。std::cout 不知道如何处理(它会输出什么值?)。因此,编译器会将其标记为错误。您需要注释掉这行代码才能使您的代码编译。
例子
如果将显示 Hello World 的工作委托给一个函数,且该函数不做别的,则它就不需要任何参数(因为它除了显示 Hello World 外,什么也不做),也无需返回任何值(因为您不指望这样的函数能提供在其他地方有用的东西)。如下示例程序演示了一个这样的函数:
#include <iostream>
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中编写没有参数和返回值的函数 返回值为 void 函数不需要将值返回给调用者。为了告诉编译器函数不返回值,返回类型为 void。例如: #include <iostream>// void means the function does not return a value to the caller void printHi() {std…...
SWC 流程
一个arxml 存储SWC (可以存多个,也可以一个arxml存一个SWC)一个arxml 存储 composition (只能存一个)一个arxml 存储 system description (通过import dbc自动生成system) 存储SWC和composition的arxml文件分开&#…...
怒刷LeetCode的第10天(Java版)
目录 第一题 题目来源 题目内容 解决方法 方法一:两次拓扑排序 第二题 题目来源 题目内容 解决方法 方法一:分治法 方法二:优先队列(Priority Queue) 方法三:迭代 第三题 题目来源 题目内容…...
java框架-Springboot3-场景整合
文章目录 java框架-Springboot3-场景整合批量安装中间件NoSQL整合步骤RedisTemplate定制化 接口文档远程调用WebClientHttp Interface 消息服务 java框架-Springboot3-场景整合 批量安装中间件 linux安装中间件视频 NoSQL 整合redis视频 整合步骤 RedisTemplate定制化 Re…...
在Bat To Exe Converter,修改为当异常结束或终止时,程序重新启动执行
在Bat To Exe Converter,修改为当异常结束或终止时,程序重新启动执行 .bat中的代码部分: .bat中的代码echo offpython E:\python\yoloProjectTestSmallLarge\detect.pypause,我想你能帮在Bat To Exe Converter,修改成…...
PythonWeb服务器(HTTP协议)
一、HTTP协议与实现原理 HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于在网络上传输超文本数据的协议。它是Web应用程序通信的基础,通过客户端和服务器之间的请求和响应来传输数据。在HTTP协议中连接客户与服务器的…...
Northstar 量化平台
基于 B/S 架构、可替代付费商业软件的一站式量化交易平台。具备历史回放、策略研发、模拟交易、实盘交易等功能。兼顾全自动与半自动的使用场景。 已对接国内期货股票、外盘美股港股。 面向程序员的量化交易软件,用于期货、股票、外汇、炒币等多种交易场景ÿ…...
c语言进阶部分详解(经典回调函数qsort()详解及模拟实现)
大家好!上篇文章(c语言进阶部分详解(指针进阶2)_总之就是非常唔姆的博客-CSDN博客)我已经对回调函数进行了初步的讲解和一个简单的使用事例,鉴于篇幅有限没有进行更加详细的解释,今天便来补上。…...
win下 lvgl模拟器codeblocks配置
链接: 官方lvgl的codeblocks官方例子 下载慢的话,可能需要点工具。 需要下载的东西 https://github.com/lvgl/lv_port_win_codeblocks https://github.com/lvgl/lv_drivers/tree/4f98fddd2522b2bd661aeec3ba0caede0e56f96b https://github.com/lvgl/lvgl/tree/7a23…...
Quartus出租车计价器VHDL计费器
名称:出租车计价器VHDL计费器 软件:Quartus 语言:VHDL 要求: 启动键start表示汽车启动,起步价7元,同时路程开始计数,停止键stop表示熄火,车费和路程均为0,当暂停键pa…...
浅谈单元测试:测试和自动化中的利用
【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程,刷完面试就稳了,你也可以当高薪软件测试工程师(自动化测试) 浅谈单元测试是一件棘手的事情。我很确定测试人员在某个时候会抱怨开发人员没有正确地进行单元测试&…...
深度详解Java序列化
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
Linux下的网络编程——B/S模型HTTP(四)
前言: HTTP是基于B/S架构进行通信的,而HTTP的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器,例如Firefox、Internet Explorer、Google Chrome、Safari、Opera等,此外,客户端的命令…...
Go语言入门篇
目录 一、基础数据类型 1.1 变量的定义方式 1.2 用%T输出变量的类型 二、复合数据类型 2.1 数组 2.1.2、数组的遍历 2.1.3 数组传参 2.2. 切片slice 2.2.1. 初始化切片 2.2.2. append向切片中追加元素 2.2.3. 切片的截取 2.3. map 2.3.1. map初始化 2.3.2. 添加和…...
基于springboot+vue的青年公寓服务平台
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
Spring-ImportSelector接口功能介绍
ImportSelector接口是至spring中导入内部类或者外部类的核心接口,只需要其定义的方法内返回需要创建bean的class字符串就好了,比如:当我们引入一个外部share包,我们拿到里面的Class返回出去,就能得到这个bean,是多么神…...
YOLOv5如何训练自己的数据集
文章目录 前言1、数据标注说明2、定义自己模型文件3、训练模型4、参考文献 前言 本文主要介绍如何利用YOLOv5训练自己的数据集 1、数据标注说明 以生活垃圾数据集为例子 生活垃圾数据集(YOLO版)点击这里直接下载本文生活垃圾数据集 生活垃圾数据集组成&…...
李航老师《统计学习方法》第1章阅读笔记
1.1 统计学习 统计学习的特点 统计学习:计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析 现在人们提及机器学习时,往往指统计机器学习,所以可以认为本书介绍的是机器学习方法 统计学习的对象 统计学习研究的对象是数据(data)…...
基于微信小程序的背单词学习激励系统设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言用户微信端的主要功能有:管理员的主要功能有:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉…...
VScode调试复杂C/C++项目
以前都是用的VScode调试c/cpp的单个文件的编译和执行, 但是一遇到大型项目一般就用gdb了, gdb的调试效率和VScode差距还是比较大的, 但最近发现VScode其实也能调试复杂的cpp项目, 所以记录一下. 首先明确一下几点: 首先cpp文件需要经过编译, 生成可执行文件, 然后通过运行/调…...
UR机械臂ROS2驱动选型指南:深入对比Ethernet RTDE与EtherCAT,你的项目该怎么选?
UR机械臂ROS2驱动选型指南:Ethernet RTDE与EtherCAT深度对比与实战决策 在工业自动化与协作机器人领域,UR(Universal Robots)机械臂因其灵活性和易用性广受青睐。然而,当工程师们将UR机械臂集成到ROS2生态系统中时&…...
智能图像识别自动点击:解放双手的安卓自动化神器
智能图像识别自动点击:解放双手的安卓自动化神器 【免费下载链接】Smart-AutoClicker An open-source auto clicker on images for Android 项目地址: https://gitcode.com/gh_mirrors/smar/Smart-AutoClicker 你是否曾遇到这样的困境:游戏中需要…...
源码之家_最新建站源码_开源项目_成品源码一键部署
在互联网技术飞速发展的今天,网站建设已成为企业、个人展示形象、开展业务的重要窗口。然而,从零开始搭建一个功能完善、界面美观的网站,往往需要投入大量的时间和精力。对于开发者而言,寻找优质、可靠的源码资源,成为…...
3个核心创新让Tomato-Novel-Downloader实现小说下载全场景覆盖
3个核心创新让Tomato-Novel-Downloader实现小说下载全场景覆盖 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 如何通过智能技术解决小说下载中的速度、格式与稳定性难题 一、…...
LS-Dyna模态分析实战:从模型构建到结果解读的全流程指南
1. 认识LS-Dyna模态分析:为什么它值得掌握 我第一次接触LS-Dyna模态分析是在一个汽车零部件振动问题排查项目中。当时客户抱怨某款发动机支架在特定转速下会出现异常噪音,我们团队花了三天时间都没找到症结所在。直到用LS-Dyna做了模态分析,才…...
Qwen3.5-9B 128K上下文应用:整套API文档索引构建+精准接口调用推荐
Qwen3.5-9B 128K上下文应用:整套API文档索引构建精准接口调用推荐 1. 项目概述与核心能力 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,在技术文档处理领域展现出强大的应用潜力。这个模型特别适合用于构建智能化的API文档系统,能够帮助…...
如何用UI For Docker轻松管理数据卷:持久化存储的完整指南
如何用UI For Docker轻松管理数据卷:持久化存储的完整指南 【免费下载链接】ui-for-docker A web interface for Docker, formerly known as DockerUI. This repo is not maintained 项目地址: https://gitcode.com/gh_mirrors/ui/ui-for-docker UI For Dock…...
SpringBoot单元测试实战:从Service到Controller的Mock技巧全解析
SpringBoot单元测试实战:从Service到Controller的Mock技巧全解析 单元测试是保障代码质量的重要防线,但在实际开发中,许多团队往往因为时间压力或技术复杂度而忽视这一环节。SpringBoot作为Java生态中最流行的框架之一,其单元测试…...
OpenTiny NEXT 从入门到精通·第 2 篇
OpenTiny NEXT 从入门到精通第 2 篇:组件篇——TinyVue 核心组件库深度实战组件库是前端应用的“乐高积木”。TinyVue 作为 OpenTiny 生态的核心 UI 组件库,拥有 130 企业级组件,覆盖中后台开发的绝大部分场景。但会用组件只是第一步…...
云容笔谈多语言支持实践:中英日韩提示词对齐与东方语义保真度验证
云容笔谈多语言支持实践:中英日韩提示词对齐与东方语义保真度验证 1. 引言:当东方美学遇见全球用户 想象一下,一位来自日本的插画师,想创作一位身着“十二单”的平安时代贵族女性;一位韩国的游戏美术,需要…...
