引用:return语句用于结束当前正在执行的函数,并将控制权返回给调用此函数的函数。
引用:return语句有两种形式:reutrn; return expression;……第二种形式提供了函数的结果。
笔记:以上第一句话说了return的两个作用之一:结束函数。return的作用之二是提供函数的返回值。
对于return语句的两种形式,情式一只能用于无返回值的函数,情式二可以用于有返回值的函数也可用于无返回值的函数。
如果函数有返回值,就必须用形式二来结束,这是显而易见的。
对于没有返回值的函数,可以不写return语句,“隐式的return发生在函数的最后一个语句完成时”。也可以用形式一来结束,这种用法一般用在函数中间,判断某些条件之后就立即结束,后面的语句不再执行。如果用形式二来返回,那么express必须是另一个没有返回值的函数。如:
void FuncA();
void FuncB()
{
return FuncA();
}
个人认为这种写法不是好习惯,因为看起来FuncB有了返回值,如果逻辑上有这需要,我认为写成以下格式更好:
void FuncB()
{
FuncA();
return;
}
在BASIC中,函数的返回值与结束是由两个不同的语句实现的。前者是一个给函数名赋值的语句,后者则是“Exit Function”语句。这种设计除了不如C++精练以外,还容易出事。比如在函数开头先给函数名赋一个默认值,然后根据某些条件给它赋其它特定的值并Exit。如果写函数时不小心漏了某个赋值语句,函数将产生BUG。C++则不会产生这种类型的BUG。
引用:千万不要返回局部对象的引用。
引用:千万不要返回局部对象的指针。
笔记:以上两句是黑体的标题,书中专门进行了讨论。不过这个错误虽然严重,却不难理解。知道了就好了。
main()是一个很特殊的函数,它的特殊性在这里还有体现。引用:“返回类型不是void的函数必须返回一个值,但此规则有一个例外的情况:允许主函数main没有返回值可结束。……编译器会隐式地插入返回0的语句。”
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
