C++ Primer 第五版 第6章 6.3——函数返回类型和return语句阅读笔记

习题答案请参考:C++ Primer 第五版 第6章 6.3——函数返回类型和return语句习题答案 


目录

6.3 返回类型和return语句

6.3.1 无返回值函数

无返回值函数的特性

6.3.2 有返回值函数

有返回值函数的特性

引用返回左值

6.3.3 返回数组指针

声明返回数组指针的函数

使用尾置返回类型


6.3 返回类型和return语句

return语句终止当前正在执行的函数并将控制权返回到调用该函数的地方。

两种return语句形式:

(1)return;

(2)return expression;


6.3.1 无返回值函数

 无返回值函数即函数返回类型为void。

无返回值函数的特性

(1)可以没有return语句,void返回类型函数会自动执行return

(2)如果需要在函数中间提前退出,需要使用return语句退出

如:编写swap函数,使得在交换值相等时直接退出

void swap(int &val1, int &val2)
{
    //如果交换值相等,不需要交换,直接退出
    if (val1 == val2)
        return;   //return语句提前结束
    //执行交换,无需return语句,会自动退出
    int Temp = 0;
    Temp = val1;
    val1 = val2;
    val2 = Temp;
}

6.3.2 有返回值函数

有返回值函数的特性

(1)函数返回类型不是void

(2)必须包含return返回语句,且返回类型必须和函数返回类型相同

 小贴士!!!

函数返回值不要返回局部对象的引用或指针,因为随着函数的结束,局部对象也被释放,局部对象的引用或指针将指向不再有效的内存区域(细节,注意!!


引用返回左值

函数返回引用则得到左值,其他返回类型则得到右值。得到左值如果是非常量就可以对其赋值,但如果是常量引用就不能赋值,如:

# include <string>
# include <vector>
using namespace std;

#include <iostream>
#include <string>
#include <vector>
using namespace std;


char &get_val( string &str, string::size_type ix)
{
    return str[ix];  //返回str[ix]的引用
}
int main()
{
    string s("a value");
    cout << s << endl;
    get_val(s, 0) = 'A';  //函数返回左值,并对其赋值
    cout << s << endl;
    return 0;
}


6.3.3 返回数组指针

声明返回数组指针的函数

声明返回数组指针函数时,数组的维度必不可少,且需要在形参的后面:

Type (*function(parameter list)) [dimension]

具体的例子:

int (*fun(int i)) [10]

按照如下顺解读上述声明含义:

(1)func(int i)表示调用func函数时需要一个int类型的实参

(2)(*func(int i))表示可以对函数调用的结果执行解引用

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

(4)int (*func(int i))[10]表示数组中的元素是int型


使用尾置返回类型

尾置返回类型一般跟在形参列表后面,用->表示(这里不是太明白):

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

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值