java statement 返回类型,6.3 返回类型和返回语句 | Return type Return statement

无返回值函数

对于返回类型是void的函数,return后不跟表达式。最后的 return; 可以没有而让程序隐式执行。在void函数中的return语句还有提前使函数退出的作用而不进行接下来的计算,如定义一个swap函数在二者相同时不继续运算直接退出:

void swap(int& v1, int& v2){

if (v1==v2) return;

int tmp = v2;

v2 = v1;

v1 = tmp;

//可以不显式添加return

}

有返回值函数

函数不是void类型,则每个void语句都必须返回一个值,且这个值必须与函数返回类型相同或可以隐式转换为函数的返回类型。同样,程序执行到return语句后会提前退出:

int foo(int a){

if (a) return 0;

return 1;

}

int main(){

int b = 2, c = 0;

cout<

}

值如何被返回

返回的方式和初始化一个变量或形参完全一致:返回的值用于初始化调用点的一个临时量,此临时量即函数调用结果。

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

否则当结束运行,函数的占用空间被完全释放,引用或指针不再有效。

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

调用运算符的优先级和点运算符或箭头运算符相同。因此可以使用函数调用的结果直接访问结果对象的成员:

string a(string s1, string s2){return s1+s2;}

int main(){

string sa = "a", sb = "b";

cout<

}

引用返回左值

调用一个返回引用的函数,得到的结果是一个左值。因此可以为返回类型是非常量引用的函数的结果赋值:

//注意函数返回类型为char!

char get_var(string& str, string::size_type index){

return str[index];

}

int main(){

s = "hello";

get_val(s, 0) = 'H';

cout<

}

列表初始化返回值

可以返回花括号包围的值列表给一个临时量。此列表也用来对表示函数返回值的临时量进行初始化。若是空,则默认初始化。否则由函数返回类型决定返回值。

就如果返回的是内置类型,则花括号列表只允许最多一个值且该值所占空间不应大于目标类型的空间。若是类类型则由类本身定义,如vector的列表初始化。

主函数main的返回值

允许main函数没有return语句而直接结束,编译器会隐式地在最后插入 return 0。

递归

无论直接或间接,一个函数调用了自身则称为递归函数。如下列阶乘函数:

int factorial(int val){

if (val) {

cout<

}

//注意val-1不能是val--否则死循环

//若是--val不会报错,但会多减一次,使最终返回值为 0

return 1;

}

返回数组指针

数组不能拷贝,所以不能被返回。

返回数组的指针可用类型别名简化:

typedef int arrT[10];

using arrT = int[10];//与上述等价且易懂

arrT* func(int i); //返回一个指向(含有10个整数的数组的)指针

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

函数形式如下:

type (*function(parameter_list))[dimension]

func(int i):表示调用func时需要int i作为实参

(*func(int i)):表示可以对调用结果进行解引用操作

(*func(int i))[10]:表示解引用func的调用将得到一个大小10的数组

int (*func(int i))[10]:表示数组中元素是int类型。

尾置返回类型trailing return type

任何函数定义都可以使用尾置返回,对于返回类型复杂的函数较为有效,比如返回类型是数组的指针或者数组的一样弄。尾置返回类型跟在形参列表后面以 -> 开头:

auto func(int i) -> int(*)[10]

使用decltype

如果知道函数返回指针指向哪个数组,即可使用decltype声明返回类型。例如下列函数返回的指针根据参数不同而改变:

int odd[] = {1, 3, 5, 7, 9};

int even[] = {2, 4, 6, 8, 0};

decltype(odd) *arrPtr(int i){

return (i%2) ? &odd : &even;

}

int main(){

int i = 3;

cout<

}

attrPtr使用decltype表示其返回类型是个指针,并且该指针所指的对象与odd的类型一致。因为odd是数组,arrPtr返回一个指向含有5个整数数组的指针。注意decltype的结果是个数组,要想表示arrPtr返回指针还必须在函数声明时加一个*符号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

异步调用 (转载)

异步操作通常用于执行完成时间可能较长的任务&#xff0c;如打开大文件、连接远程计算机或查询数据库。异步操作在主应用程序线程以外的线程中执行。应用程序调用方法异步执行某个操作时&#xff0c;应用程序可在异步方法执行其任务时继续执行。.NET框架能够对任何方法进行异步…

《Effective Java》读书笔记 Item 1:考虑静态工厂方法,而不是构造器

众所周知&#xff0c;要想能获取一个类的实例&#xff0c;该类得要提供一个public的构造器。但是《Effective Java》书中说还有一个方法&#xff0c;那就是提供静态工厂方法&#xff08;static factory method&#xff09;&#xff0c;该方法时静态&#xff0c;同时可以根据参数…

[转]MySQL 表锁和行锁机制

本文转自&#xff1a;http://www.cnblogs.com/itdragon/p/8194622.html MySQL 表锁和行锁机制 行锁变表锁&#xff0c;是福还是坑&#xff1f;如果你不清楚MySQL加锁的原理&#xff0c;你会被它整的很惨&#xff01;不知坑在何方&#xff1f;没事&#xff0c;我来给你们标记几个…

使用JS实现文字搬运工

使用JS实现文字搬运工 效果图&#xff1a; 代码如下&#xff0c;复制即可使用&#xff1a; <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>使用JS实现文字搬运工&…

ActiveMQ –经纪人网络解释–第3部分

现在&#xff0c;我们已经在本博客系列的第1部分和第2 部分中了解了ActiveMQ网络连接器的基础&#xff0c;在第3部分中&#xff0c;我们将研究ActiveMQ如何平衡连接到代理网络的使用者。 介绍 当可以无序处理队列中的消息时通常使用并发使用者&#xff0c;通常可以提高消息吞吐…

PJMEDIA之录音器的使用(capture sound to avi file)

为了熟悉pjmedia的相关函数以及使用方法&#xff0c;这里练习了官网上的一个录音器的例子。 核心函数&#xff1a; pj_status_t pjmedia_wav_writer_port_create(pj_pool_t * pool, const char * filename, unsigned clock_rate, unsigned channel_count, unsigned samples…

2007年暑期总结

又是一个没有回家的假期&#xff0c;一个月的鸡蛋炒拉面&#xff0c;一个月沉浸在编程的世界里……收获早已超越了技术本身&#xff0c;项目的实践&#xff0c;系统的架构&#xff0c;……更多的&#xff0c;是朋友们在一起的乐趣。A5闹鬼记&#xff0c;回去洗洗就睡了&#xf…

Linux下用户组、文件权限详解=------转载文

转载自-----原文地址&#xff1a; https://www.cnblogs.com/123-/p/4189072.html Linux下用户组、文件权限详解 用户组 在linux中的每个用户必须属于一个组&#xff0c;不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念 - 所有者 - 所在组 - 其它组 - 改变用…

风暴事件处理器–每个工作者的GC日志文件

在过去的三个月中&#xff0c;我正在与一个新团队合作&#xff0c;为电信领域的大数据分析构建产品。 Storm事件处理器是我们使用的主要框架之一&#xff0c;而且确实很棒。 您可以阅读其官方文档&#xff08;已改进&#xff09;中的更多详细信息。 Storm使用Workers来完成您…

JS实现逼真的雪花飘落特效

逼真的雪花飘落特效 效果图&#xff1a; 图片素材 &#xff1a; --> ParticleSmoke.png 代码如下&#xff0c;复制即可使用&#xff1a; <!doctype html> <html> <head> <meta charset"UTF-8"> <meta name"renderer" conte…

本地执行php查看内存占用,查看页面执行php占用内存情况

今天头脑一热&#xff0c;想看一下页面在执行的过程中占用了多少内存&#xff0c;我也不知道这样做的目的是什么&#xff0c;可能是出于我的惯性思维吧。不过这样做也不是完全没用&#xff0c;你可以清楚的知道哪些页面占用的内存比较多&#xff0c;特别是对于使用共用主机的网…

阴影及定位

阴影及定位 隐藏及阴影 标签隐藏 1、显示方式 display display: none; /*表示在页面中隐藏&#xff0c;并且不占位&#xff0c;但是重新显示出来又会占位*/ 2、透明度 opacity opacity: 0; /* 0 代表完全透明 1 代表完全显示 但是即使是透明了也会在页面中占位*/ /* 显示方式透…

ABAP--关于ABAP流程处理的一些命令的说明(stop,exit,return,check,reject)

Stop 命令使用该命令的程序位置INITIALIZATION, AT SELECTION-SCREEN, START-OF-SELECTION和GET 事件中处理说明1、 当在INITIALIZATION事件执行该命令&#xff0c;系统将直接触发应用服务器和客户端屏幕元素的发送&#xff1b;2、 在其他事件中将直接触发END-OF-SELECTION事件…

[Code+#3]寻找车位

[Code#3]寻找车位 挺厉害的线段树题 m<n&#xff0c;所以n<2000,并且只有1000次修改询问&#xff0c;mqlogn的复杂度可以接受&#xff01; 求全局&#xff1f; 对行(n)建一个线段树。 线段树中维护的东西&#xff0c;一定可以包含所有“完全包含在”这个横条中的最大正方…

ActiveMQ –经纪人网络解释–第2部分

在此博客中&#xff0c;我们将看到双工网络连接器如何工作。 在上一部分中&#xff0c;我们从broker-1和broker-2创建了一个网络连接器。 我们能够看到当代理2上有一个使用者使用队列“ foo.bar”时&#xff0c;代理1上的队列“ foo.bar”的消息如何转发到代理2上的队列“ foo…

JQ实现情人节表白程序

JQ实现情人节表白页面 效果图&#xff1a; 表白利页&#xff0c;你值得拥有哦&#xff01; 代码如下&#xff0c;复制即可使用&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title>JQ实现情人节表白程序<…

php 内部异步执行顺序,event_loop中不同异步操作的执行顺序

关于js的单线程、怎么创建一个异步任务都是老生常谈的话题了&#xff0c;我们今天就总结一下js不同的异步操作到底执行顺序如何。首先我们要明白js两种任务类型&#xff0c;一个是macrotask(宏任务)&#xff0c;一个是 microtask(微任务)。一个宏任务就是一个事件循环&#xff…

OpenGPU.org域名已经被劫持

这个域名被指向了上海黄浦区某地。 此时此刻&#xff0c;我的心情无比激动&#xff0c;“这年头&#xff0c;你要是不被‘墙’了&#xff0c;都不好意思出门”。 This domain name had been redirected to Shanghai, PRC. At this moment, I’m really excited that it’s my h…

Java 8日期时间API教程:LocalDateTime

该博文是Java 8中引入的有关Date Time API的系列教程的一部分。在本博文中&#xff0c;我将介绍LocalDateTime类中可用的一些方法。 LocalDateTime是一个不可更改的线程安全对象&#xff0c;它表示ISO-8601日历系统中没有时区的日期时间&#xff0c;例如2014-03-30T02&#xf…

消息队列使用的四种场景介绍(转)

消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合&#xff0c;异步消息&#xff0c;流量削锋等问题 实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构 使用较多的消息队列有ActiveMQ&#xff0c;RabbitMQ&#xff0c;ZeroMQ&#xff0c;Ka…