您的位置:首页 > 其它

函数(三):返回类型和 return 语句

2020-07-18 05:15 28 查看

<基于 C++ Primer P199>
1.无返回值的函数
只有返回类型是 void 的函数。
可以不使用 return 语句,会隐式地执行。若想在中间位置提前退出,可以使用 return 语句。可以使用 return 语句返回另一个返回 void 类型的函数。
2.有返回值的函数
在含有 return 语句的循环后面应该也有一条 return 语句。
(1)值是如何被返回的:
返回一个值的方式和初始化一个变量或形参的方式完全一样:返回值用于初始化调用点的一个临时量,该临时量就是函数调用的结果。
(2)不要返回局部对象的引用或指针:
函数完成后,它所占的存储空间也随之被释放掉,因此函数终止意味这局部变量的引用将指向不再有效的内存区域。
想要确保返回值安全,我们不妨提问:引用所引的是在函数之前存在的哪一个对象。
(3)调用运算符的优先级与点运算符和箭头运算符相同,如果函数返回指针、引用或类的对象,可以使用函数调用的结果访问结果对象的成员。
(4)调用一个返回引用的函数得到左值,其他返回类型得到右值。
(5)函数可以返回花括号包围的值的列表,用来对表示函数返回的临时量进行初始化。
(6)主函数 main 的返回值:
允许没有 return 语句直接结束,编译器将隐式地插入一条返回 0 的 return 语句。
main 函数的返回值可以看作是状态指示器,返回 0 表示执行成功,返回其他值表示执行失败,其中非零值的具体含义依机器而定。可以使用 cstdlib 头文件中定义的两个预处理变量,EXIT_FAILURE 和 EXIT_SUCCESS 分别表示成功和失败。
(7)函数可以调用自身,成为递归函数。在递归函数中,一定有某条路径是不包含递归调用的,否则函数将不断地调用它自身知道程序栈空间耗尽为止。
3.返回数组指针:
因为数组不能被拷贝,所以函数不能返回数组,但可以返回数组的指针或引用。

int (*func(int i) [10]; // 声明一个返回指向大小为 10 的整型数组指针的函数

简化的方式有三种:
(1)使用类型别名;
(2)使用尾置返回类型;
(3)使用 decltype,注意 decltype 不负责将数组类型转换成指针类型。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: