重点:
1.return语句功能:终止当前正在执行的函数并将控制权返回到调用该函数的地方。Return语句两种形式:
Return;
Return expression;
2.返回void的函数不要求非得有return语句,因为在这类函数的最后一句后面会隐式地执行return。
3.Void函数如果想中间退出,可以使用return,作用相当于break,提前退出。
4.一个返回类型是void的函数也可以使用return expression形式,不过return语句的expression必须是另一个返回void的函数。
5.Return语句的返回值类型必须与函数的返回类型相同,或者能隐式地转换成函数的返回类型。
6.在含有return语句的循环后面应该也有一条return语句,如果没有的话,程序就应该是错误的。
7.函数完成后,它所占用的存储空间也随之释放。因此,函数终止将意味着局部变量的引用将指向不再有效的内存区域。
Tip:确保返回值安全,我们不妨提问:引用所引的是在函数之前已经存在的哪个对象?
8.返回局部对象的引用时错误的,同样,返回局部对象的指针也是错误的。一旦函数完成,局部对象被释放,指针将指向一个不存在的对象。
9.引用返回左值!出现在赋值语句的左侧;如果返回类型是常量引用,不可以给结果赋值。
10.C++11新标准规定:函数可以返回花括号包围的值的列表。
Return {};
Return {“functionX” , “okey”};
Return {“functionX” , expected , actual};
如果函数返回的是内置类型,则花括号包围的列表最多包含一个值。
11.C++11新标准规定:我们允许main函数没有return语句直接结束,因为如果到了main函数的结尾处没有return语句,编译器会隐式地插入一条返回0的return语句。
12.预处理变量,既不能在前面加上std::,也不能在using声明中出现。
13.递归函数:如果函数调用了它本身,无论调用是直接的或是间接的,都称为递归函数。
NOTE:main函数不可以调用自己!
14.因为数组不能被拷贝,所以函数不能返回数组。但是可以返回数组的指针或引用。
15.返回数组指针的函数形式如下所示:
Type ( *function ( parameter_list ) [dimension]
Type:表示元素的类型,dimension表示数组的大小,(*function(parameter_list))两端的括号必须存在。
Tip:如果没有这对括号,函数的返回类型将是指针的数组。