重點:
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:如果沒有這對括號,函數的返回類型將是指針的數組。