返回类型和return语句

2023-11-10

  • return语句中之当前正在执行的函数,并将控制权返回到调用该函数的地方

无返回值函数

  • 没有返回值的return语句只能用在返回类型是void的函数中,返回void的函数不要求非得有return语句,因为这类函数最后一句后面会吟诗执行return
  • void函数可以使用return语句提前退出函数

有返回值函数

  • return语句返回值类型必须与函数哦返回类型相同,或者可以隐式转换成函数返回值类型
  • 在含有return语句哦循环后面应该也有一条return语句,如果没有的话,该程序就是错误的

值是如何被返回的

  • 返回一个值的阿飞那个是和初始化一个变量或形参的方式一样:返回值用于初始化调用点的一个临时量,该临时量就是函数调用的结果
  • 函数返回局部变量时的初始化
string make_plural(size ctr,constr string &word){
    return(ctr>1)?word+ending:eord;
}
  • 该函数返回类型是string,意味着返回值将被拷贝到调用点。该函数将返回word的一个副本或者一个未命名的临时变量string对象,该对象内容是word和ending的和
  • 如果函数返回引用,则该引用仅仅是它所引对象的一个别名,如果形参和返回类型都是const string 的引用,不管调用函数还是返回结果都不会真正拷贝string对象
const string &shorterString(const string &s2, const string &s2){
    return s1.size() <= s2.size()? s1:s2;
}

不要返回局部对象的引用或指针

  • 函数完成后它所占用的存储空间也随之被释放掉了。因此函数终止意味着局部变量的引用将不在指有效的内存区域

返回类类型的函数和调用运算符

  • 调用运算符也有优先级和结合律

引用返回左值

  • 函数的返回类型据决定函数调用是否是左值
  • 调用一个返回引用的函数得到左值,其他返回类型得到右值

主函数main的返回值

  • 我们允许main函数没有return语句直接结束,如果控制到达了main函数的结尾处而没有return语句,编译器将隐式插入一条返回0的return语句
  • main函数返回值可以看成状态指示器,返回0代表执行成功,其他值代表失败,非0值具体含义根据机器而定。

递归

  • 如果一个函数调用了自身,称该函数为递归函数
  • 递归函数中必须有某条路径是不包含递归调用的

返回数组指针

  • 数组不能被拷贝,函数不能返回数组
  • 函数可以返回数组的指针或引用
  • 定义别名的方式返回
typedef int arrT[10];
using arrT = int[10];
arrT* func(int i);

声明一个返回数组指针的函数

  • 在声明func时不使用类型别名,我们必须了哦及被定义名字后面数组的维度
int arr[10];//arr是一个含有10个整型的数组
int *p1[10];//p1是一个含有是个指针的数组,指针指向整型
int (*p2)[10] = &arr; //p2是一个指针,指向含有10个整数的始祖
  • 和上面声明一样,如果想定义一个返回数组指针的函数,则数组的维度必须跟在函数名字之后。
  • 函数形参列表也跟在函数名字后面且形参列表应该先于数组的维度
  • 返回数组指针的函数形式如下:
Type (*function ( parameter_list ) ) [dimension]

使用尾置返回类型

  • 尾置返回类型跟在形参列表后面并以一个->符号开头
  • 在本应该出现返回类型的地方放置一个auto
auto func(int i) -> int(*)[10];

使用decltype

  • 如果我们知道函数返回的指针将指向那个数组,可以使用decltyor关键字声明返回类型
int odd[] = {1,3,5,7,9};
int even[] = {2,4,6,8};
decltype(odd) *arrPtr(int){
    return (i%2)? &odd:&even;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回类型和return语句 的相关文章

随机推荐

  • 预览窗格无法预览文件_如何在Windows 10上显示文件资源管理器的预览窗格

    预览窗格无法预览文件 It s easy to preview files without opening them in Windows 10 thanks to the Preview Pane feature in File Expl
  • Python 复制和移动文件:shutil

    用 Python 来进行文件的复制和移动操作 需要利用 Python 的标准库 shutil 程序实现 一 复制文件 复制文件 shutil copyfile file old jpg file new jpg 只能对文件进行操作 shut
  • 使用函数输出指定范围内的Fibonacci数 (20 分)

    使用函数输出指定范围内的Fibonacci数 20 分 本题要求实现一个计算Fibonacci数的简单函数 并利用其实现另一个函数 输出两正整数m和n 0
  • python 合并内容相同单元格

    客户这边 其中有一个如同上图所示的 sheet 然而需求是 需要将这张表第一列 一级部 数据相同内容做合并单元格处理 结果如下 代码分享如下 from openpyxl import load workbook 合并单元格 result f
  • openai账号创建教程-openai注册问题大全

    openai注册页面打不开 遇到openai注册页面打不开 可以用以下解决方法 检查网络连接 如果您的网络连接不稳定或者有问题 可能会导致访问网站异常 请尝试使用其他设备或连接其他网络 看是否能够打开OpenAI注册页面 清除浏览器缓存和C
  • nginx的proxy_pass路径转发规则最后带/问题

    一 location匹配路径末尾没有 location sta proxy pass http 192 168 1 1 sta 外面访问 http 外网IP sta sta1 html相当于访问 http 192 168 1 1 sta s
  • C#: Json序列化和反序列化,集合为什么多出来一些元素?

    如下面的例子 很容易看出问题 如果类本身的无参构造函数 就添加了一些元素 序列化 再反序列化 会导致元素增加 如果要避免 必须添加 new JsonSerializerSettings ObjectCreationHandling Obje
  • windows vscode远程访问linux虚拟机里面的docker

    1 启动有host网络的容器 进入容器命令行 2 安装并开启ssh服务 启动容器后 安装openssh apt get update apt get install openssh server 3 设置远程登录的密码 如果希望直接使用ro
  • css 色弱模式(反色)

    在 body 或者任意元素加上这2个样式即可 webkit filter invert 80 filter invert 80 其他效果 blur 模糊 webkit filter blur 2px brightness 亮度 webkit
  • vue自定义指令

    除了核心功能默认内置的指令 v model和v show 也可以注册自定义指令 注册一个全局自定义指令 v focus Vue directive focus 当被绑定的元素插入到DOM中时 inserted function el 聚焦元
  • VTK安装与项目实例

    VTK安装与项目实例 所需软件的安装 本文中VTK项目的开发所用语言为C 使用Vs Qt进行开发 另需要CMake进行编译安装 Vs Qt安装与配置 具体步骤见 Vs Qt下载与配置 CMake安装 下载地址 常规软件安装步骤 VTK的下载
  • ping 的原理解析

    一 ping概述 ping 属于一个通讯协议 是 TCP IP 协议的一部分 利用 ping 命令可以检查网络是否通畅或者查看网络连接速度 便于分析和判定网络故障 使用 ping 命令会发送一个 ICMP Internet Control
  • Linux文件编辑命令具体整理

    刚接触Linux 前几天申请了个免费体验的阿里云server 选择的是Ubuntu系统 配置jdk环境变量的时候须要编辑文件 vi命令编辑文件 百度了一下 非常多回答不是非常全面 因此编辑文件话了一些时间 这里博主整理了一下 分享给大家 一
  • tomcat服务器缓存配置文件,tomcat服务器从memcached缓存里面设置Session

    tomcat服务器从memcached缓存里面设置Session 发布时间 2020 05 28 18 03 29 来源 51CTO 阅读 374 作者 素颜猪 1 分别向tomcat的lib中添加jar包 jar包目录如下 192 168
  • Python3,1行代码,制作GUI图形界面,果然被种草了。

    1行代码制作GUI 1 引言 2 代码实战 2 1 安装 2 2 功能介绍 2 2 1 选择文件夹 2 2 2 选择文件 2 2 3 选择日期 2 2 4 输入文本 2 2 5 弹窗显示 2 2 6 弹窗选择 2 2 7 自定义弹窗 2 3
  • Prometheus原理详解

    引言 zabbix是传统的监控系统 出现比云原生早 使用的是SQL关系型数据库 而Prometheus基于谷歌的borgemon使用的go语言开发 使用TSDB数据库 所以支持云原生 zabbix最新发布的6 0版本 知道自己处于生死存亡时
  • dbeaver sqlserver 驱动_免费通用数据库工具DBeaver安装及使用教程

    目录 DBeaver简介 DBeaver的安装 界面功能区简介 MySQL数据源配置 Oracle数据源配置 DBeaver简介 DBeaver 是一个基于 Java 开发 免费开源的通用数据库管理和开发工具 使用非常友好的 ASL 协议
  • linux动态库编译多重依赖,Linux动态库多重依赖

    1 动态库依赖关系 test gt hello gt world 2 源文件 world cpp include void world void printf world n hello cpp include void world voi
  • Unity关于Input的静态函数的使用

    Input GetAxis GetAxis这个函数 接收指定轴向的输入 比如 Horizontal Vertical 返回值在 1到1之间 Input GetKey KeyCode W GetKey这个函数 需要移动或者需要一直按着按键那种
  • 返回类型和return语句

    return语句中之当前正在执行的函数 并将控制权返回到调用该函数的地方 无返回值函数 没有返回值的return语句只能用在返回类型是void的函数中 返回void的函数不要求非得有return语句 因为这类函数最后一句后面会吟诗执行ret